我有一个带有: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/

10-13 02:18