Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用rails_admin中的cancan从基于授权的列表中隐藏产品_Ruby_Ruby On Rails 3_Mongoid_Cancan_Rails Admin - Fatal编程技术网

Ruby 使用rails_admin中的cancan从基于授权的列表中隐藏产品

Ruby 使用rails_admin中的cancan从基于授权的列表中隐藏产品,ruby,ruby-on-rails-3,mongoid,cancan,rails-admin,Ruby,Ruby On Rails 3,Mongoid,Cancan,Rails Admin,我有一个产品型号 能力课程如下: class Ability include CanCan::Ability def initialize(user) if user.has_role? :super_admin can :manage, :all else can :read, Product, Product.all.limit(10) if user.has_role? :brand_manager can :access, :r

我有一个
产品
型号

能力
课程如下:

class Ability
  include CanCan::Ability
  def initialize(user)
    if user.has_role? :super_admin
      can :manage, :all
    else
      can :read, Product, Product.all.limit(10) if user.has_role? :brand_manager
      can :access, :rails_admin   # grant access to rails_admin
      can :dashboard              # grant access to the dashboard
    end
  end
end
以下是rails\u admin的代码:

RailsAdmin.config do |config|
  config.authorize_with :cancan
 end

我想从列表中隐藏所有没有特定
名称的
产品
?一些
rails\u admin
不支持它。有人能帮我解决这个问题吗?

你说的
从列表中隐藏所有产品是什么意思

如果希望用户无法阅读,可以尝试:

can :read, Product do |product|
  [name1, name2].include?( product.name )
end
如果您不想退回这些产品,您可以在控制器中使用:

Product.where( :name.in => [name1, name2] )

我希望我已经帮了你

你可以这样做。 1.在模型中创建一个新字段,如admin\u user\u id 2.从创建/更新产品时,将当前管理员用户详细信息保存在产品数据中 和使用it能力课程

class Ability
include CanCan::Ability
 def initialize(user)
   if user.has_role? :super_admin
     can :manage, :all
   elsif user.has_role? :brand_manager
     can :manage,Product, :admin_user_id=> user.id
     can :access, :rails_admin   # grant access to rails_admin
     can :dashboard              # grant access to the dashboard
   end
  end
end

太棒了,我得到了我想要的。