我必須丟失一些關於運算符& &的紅寶石(我懷疑是這種行爲的原因)?RoR 3:代碼在before_filter和控制器動作中行爲不一樣
此編號: 匿名& & user_signed_in? 不會生成它在application_controller的before_filter中或家庭控制器的操作中的輸出。
而我不明白爲什麼。
詳細說明:
我在應用控制器中加入此代碼和它會運行爲的before_filter
anonymous = cookies['anonymous']
fresh_session = cookies['session_id'].nil?
rep = (fresh_session || (anonymous && user_signed_in?))
puts "REPONSE : #{rep} session: #{fresh_session} anonym #{anonymous} is there a curr user: #{user_signed_in?} /// BOTH: #{(anonymous && user_signed_in?)}"
印刷resulte是:
REPONSE : true session: false anonym false is there a curr user: true /// BOTH: true
如果相同的代碼在家庭控制器 th的動作中e打印結果是:
REPONSE : false session: false anonym false is there a curr user: true /// BOTH: false
請幫我理解。
編輯(以下Klochne的要求):
在app_controller:
Anon-class: String REPONSE : true session: false anonym false is there a curr user: true /// BOTH: true
在home_controller
Anon-class: FalseClass REPONSE : false session: false anonym false is there a curr user: true /// BOTH: false
所以一個解釋爲出於某種原因的字符串。
添加此並在兩個地方嘗試:「anon-class:#{anonymous.class.name}」 – klochner 2011-12-30 18:48:36
在您調用代碼以檢索/打印它之前,某事物已將Cookie ['anonymous']設置爲'false'在home_controller中,而在ApplicationController中調用它時將它設置爲一個字符串。這與'&&'操作符無關。 – Batkins 2011-12-30 21:47:52
我希望它是這樣的,但沒有任何設置的cookie,只有一個地方,我明確地將其設置爲false或true。 – Emanuel 2011-12-30 23:52:13