0
在控制器动作中,我需要检查控制器是否被应用程序本身访问(它将设置会话变量current_user),或者来自api调用。我的控制器的开始是这样的:在rails中使用binding.pry时,变量作用域是否会发生变化?
130: def create
131: # handle the possibility that this is an api call
132: api_call = current_user.nil?
=> 133: binding.pry
当我撬开才能看到是怎么回事,我得到这个荒谬的输出:
[1] pry(#<Crm::ConnectionsController>)> api_call
=> false
[2] pry(#<Crm::ConnectionsController>)> current_user
=> nil
[3] pry(#<Crm::ConnectionsController>)> current_user.nil?
=> true
[4] pry(#<Crm::ConnectionsController>)> api_call = current_user.nil?
=> true
[5] pry(#<Crm::ConnectionsController>)> api_call
=> true
当我改变变量api_call从撬控制台与下列行,然后恢复执行,控制器的行为从那里就好像api_call设置为true。
这是为什么?为什么我的控制器没有正确设置api_call?
疯狂的道具让实际的pry作者之一回答SO的问题,即使只是说“我不确定”。你是我们需要的开发者,即使不是我们应得的那种! – Jazz