3

我正在尝试实现类似的东西:

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 在可见块中可用?如果用户是管理员,我只想在“列表”视图中显示某些字段。

4

3 回答 3

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

有关其 wiki 中的 rails_admin 绑定的更多信息:https ://github.com/sferik/rails_admin/wiki/Railsadmin-DSL

希望能帮助到你。

于 2013-06-11T19:43:19.080 回答
1

初始化程序在应用程序启动时运行一次,因此我认为您无法从这样的初始化程序中获取当前用户。

于 2011-08-04T14:04:45.283 回答
0

我自己没有尝试过,但您可能会发现这很有用:

https://github.com/sferik/rails_admin/issues/559

简而言之,RailsAdmin::Config.current_user_method在 rails_admin 初始化程序中定义。

于 2011-08-04T14:00:50.890 回答