2013-02-24 1 views
2

Возможно ли использовать метод Ruby on Rails before_filter, чтобы проверить, что одна из нескольких вещей истинна? В частности, я использую Devise, в котором я определил пользователя и администратора, и я хотел бы убедиться, что тот, кто обращается к определенному контроллеру, является тем или иным. Я искал ответы в документации и так и не имел никакой удачи.Использование before_filter для проверки того, что администратор или пользователь подписан в

Спасибо, вот мои версии (если это поможет):

  • Рубин 1.9.3
  • Rails 3.2.6
  • Разрабатывают 2.2.3

ответ

4

Это возможно. Я не решаюсь на самом деле разместить это как ответ, потому что это не получается проще. Я предполагаю, что у вас есть метод admin?, который возвращает true или false в зависимости от роли пользователя.

before_filter :check_if_admin 

protected 

def check_if_admin 
    if signed_in? 
    raise 'Only admins allowed!' unless current_user.admin? 
    else 
    # or you can use the authenticate_user! devise provides to only allow signed_in users 
    raise 'Please sign in!' 
    end 
end 
+0

Вы можете добавить def check_if_admin в ApplicationHelper или, возможно, «AuthenticationHelper» и включить вспомогательный элемент в контроллер =) – Abdo