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