Я пытаюсь использовать 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. Что-то мне не хватает?