如何仅允许特定用户角色将属性更新为特定值

时间:2016-07-19 11:57:55

标签: ruby-on-rails ruby

下午,有点问题我不知道如何解决。

我正在尝试设置一些规则,只允许某些类型的用户角色将模型上的状态属性更新为特定状态。

所以我考虑用专家做这个,因为它似乎是一个授权问题,但是有一个问题就是你无法将params传递给我也需要访问的专家政策(所以我可以看到他们是什么属性试图改变为),将params传递给专家政策似乎是不好的做法。

下一个选项是让它成为模型中的回调,但是这里的问题是我无法访问回调中的current_user,并且再次将current_user帮助器添加到模型中似乎是不好的做法。

所以我可能会在控制器中做这件事吗?再次似乎不适合它吗?

让它更容易理解的一个例子:

我想允许具有admin角色的用户将帖子的状态更改为“已解决”,不允许其他人将状态更改为“已解决”

1 个答案:

答案 0 :(得分:0)

试试这个, 在用户模型中创建一个实例方法,如bellow,

def is_admin?
  self.has_role(:admin)   # if you are using rolify 
      ---OR---
  self.status == "admin"  # if you have status attribute in your user table
end

然后在post控制器的编辑/更新方法中调用current_user上的此方法。检查current_user是否为admin