Я должен что-то упустить из-за оператора && в ruby (что, я сомневаюсь, является причиной такого поведения)?
Этот код: анонимный && user_signed_in?не генерирует вывод, находится ли он в before_filter application_controller или в действии домашнего контроллера.
И я не понимаю почему.
Подробности:
Я добавил этот код в контроллер приложения, и он будет работать как 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?)}"
Напечатанный результат:
REPONSE : true session: false anonym false is there a curr user: true /// BOTH: true
Если тот же код находится в действии контроллера дома, напечатанный результат будет:
REPONSE : false session: false anonym false is there a curr user: true /// BOTH: false
Пожалуйста, помогите мне понять.
Редактировать (по запросу Клочне):
В 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
Так что по какой-то причине его интерпретируют как строку.