我正在尝试实现与此类似的东西:
RailsAdmin.config do |config|
config.model Team do
list do
field :name
field :created_at
field :revenue do
visible do
current_user.roles.include?(:accounting) # metacode
end
end
end
end
end
我知道在自述文件中它说这个例子是理论上的,但我一直认为在该块中找不到current_user。我正在使用CanCan授权:
RailsAdmin.authorize_with:cancan
在config / initializers
中的rails_admin.rb顶部有人能告诉我如何在可见区域内获取current_user吗?如果用户是管理员,我只想在“列表”视图中显示某些字段。
答案 0 :(得分:2)
由于current_user作为帮助程序包含在视图中,您可以通过绑定哈希获取它:
visible do
bindings[:view].current_user.has_role? :admin # This works for Devise
end
我从另一个问题得到了这个想法:How to set the user to current_user when creating a new model using rails_admin
有关rails_admin绑定的更多信息,请访问wiki:https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL
希望它有所帮助。
答案 1 :(得分:1)
初始化程序在应用程序启动时运行一次,所以我认为你不能在这样的初始化程序中获得当前用户。
答案 2 :(得分:0)
我自己没试过,但你可能会觉得这很有用:
https://github.com/sferik/rails_admin/issues/559
简而言之,在rails_admin初始化程序中定义RailsAdmin::Config.current_user_method
。