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
太棒了,我得到了我想要的。