Я пытаюсь использовать skip_before_filter, только если приложение находится в производственном режиме. (Я не хочу, чтобы мои экземпляры разработки были общедоступными, и я хочу, чтобы приложение автоматически определяло тип экземпляра и отображало экран входа, когда он не находится в рабочем режиме). Итак, мой контроллер приложения имеет следующую строку:
before_filter :authenticate_user!, :except => "sign_in" #redirects to log-in
А контроллер для отображения страниц имеет следующую строку:
skip_before_filter :authenticate_user!, :only => :show, :if => :in_production
#public pages are public, but only when in production.
А in_production это просто:
def in_production
ENV['RAILS_ENV']=='production'
end
Я понимаю, что здесь могут быть другие пути, но мне любопытно, почему skip_before_filter, кажется, игнорирует условное и всегда просто пропускает before_filter. Я что-то упускаю?