2

是否可以使用 Ruby on Rails 的before_filter方法来检查多件事中的一件是否正确?具体来说,我使用的是 Devise,其中我定义了一个用户和一个管理员,并且我想确保访问特定控制器的人是其中之一。我已经在文档和 SO 中寻找答案,但没有任何运气。

谢谢,这是我的版本(如果有帮助的话):

  • 红宝石 1.9.3
  • 导轨 3.2.6
  • 设计 2.2.3
4

1 回答 1

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
于 2013-02-24T12:48:12.100 回答