我有一个Product
模型。
Ability
等级如下:
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_admin
的代码:
RailsAdmin.config do |config|
config.authorize_with :cancan
end
我想从列表中隐藏所有没有特定name
的products
?有些rails_admin
不支持它。有人能帮我解决这个问题吗?
您可以这样做。1. 在模型中创建一个新的字段,如admin_user_id2. 在从产品数据中保存当前管理员用户详细信息创建/更新产品时并使用它的能力类
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
你说的hide all the producs from the list
是什么意思?
如果你想让用户看不懂,你可以试试:
can :read, Product do |product|
[name1, name2].include?( product.name )
end
如果你不想退货,你可以在你的控制器中使用:
Product.where( :name.in => [name1, name2] )
希望我对你有所帮助