Rails before_filter 检查多个角色
在我的 before 过滤器中,我调用一个包含以下代码的方法:
authorized_for_roles :administrator
在我的 application_controller
中,
def authorized_for_roles(*roles)
roles.each{|role_name| return true if current_user.role.name == role_name}
即使使用管理员角色登录,这似乎也不会返回 true。我的语法不正确吗?
如果我将代码切换为仅读取,
return true if current_user.is_an_administrator?
一切都会很好。有人可以告诉我如何修改代码来检查 is_an 吗?对于传递给该方法的每个角色?我希望能够做一些像
authorized_for_roles :administrator, :moderator
我尝试过的事情
roles.each{|role_name|return true if current_user.try(:is_an, role_name)}
,但这没有用。
编辑:更改行间距,以便代码片段的格式如下......
In my before filter, I call a method containing the following code:
authorized_for_roles :administrator
In my application_controller
def authorized_for_roles(*roles)
roles.each{|role_name| return true if current_user.role.name == role_name}
This does not seem to be returning true even when logged in with the administrator role. Is my syntax incorrect?
If I switch the code to just read
return true if current_user.is_an_administrator?
everything works great. Can someone tell me how to modify the code to check is_an? for each role passed to the method? I'd like to be able to do something like
authorized_for_roles :administrator, :moderator
I tried
roles.each{|role_name|return true if current_user.try(:is_an, role_name)}
but this did not work.
EDIT: changed line spacing so that code snippets are formatted as such...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您想使用 Enumerable#any 吗?方法。在你的第一个例子中:
You want to use the Enumerable#any? method. In your first example: