如何在config / initializers / rails_admin.rb中的“visible do”块中获取“current_user”

时间:2011-07-13 04:23:13

标签: ruby-on-rails list cancan customization rails-admin

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

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

3 个答案:

答案 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