是否可以使用 Ruby on Rails 的before_filter
方法来检查多件事中的一件是否正确?具体来说,我使用的是 Devise,其中我定义了一个用户和一个管理员,并且我想确保访问特定控制器的人是其中之一。我已经在文档和 SO 中寻找答案,但没有任何运气。
谢谢,这是我的版本(如果有帮助的话):
- 红宝石 1.9.3
- 导轨 3.2.6
- 设计 2.2.3
是否可以使用 Ruby on Rails 的before_filter
方法来检查多件事中的一件是否正确?具体来说,我使用的是 Devise,其中我定义了一个用户和一个管理员,并且我想确保访问特定控制器的人是其中之一。我已经在文档和 SO 中寻找答案,但没有任何运气。
谢谢,这是我的版本(如果有帮助的话):
有可能的。我很犹豫是否将其作为答案,因为它没有比这更简单的了。我假设您有一个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