【问题标题】:How do I use CanCan with rails admin to check for ownership如何使用 CanCan 和 rails admin 来检查所有权
【发布时间】:2011-12-21 14:47:16
【问题描述】:
当我的应用程序中的用户不是管理员用户时,我只想让他们看到他们拥有所有权的字段。
是否在每个字段的基础上设置了can :see 或类似的设置,以便它只显示使用“可以看到”的字段,或者我应该有一个名为can :oversee 的能力来声明他们可以而是查看所有内容。
我想在 rails admin 中检查用户是否是管理员要容易得多,所以在哪里设置 rails admin 只提取当前用户的记录。
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
cancan
rails-admin
【解决方案1】:
使用 cancan,您可以像这样检查对象的权限:
if can?(:read, order)
# do something!
end
if can?(:email, order)
# do something!
end
但这只是指对象级别的可见性。
在 RailsAdmin 中,您可以通过传入块来设置字段可见性,如 here 所述。
例如:
RailsAdmin.config do |config|
config.model Order do
list do
field :name
field :profit do
visible do
current_user.roles.include?(:admin)
end
end
end
end
end