我有一个带有:published
属性(布尔型)的Post模型和一个带有role
属性(字符串)的User模型。有三个角色:ROLES = %w[admin publisher author]
我不希望角色为作者的用户能够设置或编辑Post模型上的:published
字段。
我正在使用CanCan(和RailsAdmin gem),简化后的Ability.rb文件如下所示:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.role? :admin
can :manage, :all
elsif user.role? :publisher
can :manage, Post
elsif user.role? :author
# I want to prevent these guys from setting the :published attribute
end
end
end
任何人都可以做这种事情的提示吗?
最佳答案
到目前为止,这是不可能的。但是根据以下内容:https://github.com/ryanb/cancan/issues/326此功能应该在cancan 2.0中。
更新:您可以在CanCan 2.0分支上的以下位置中看到此内容:https://github.com/ryanb/cancan/tree/2.0在“资源属性”部分
关于ruby-on-rails - CanCan:限制用户根据其角色设置某些模型属性的能力,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5921591/