【问题标题】:how do i get the "current_user" in a "visible do" block in config/initializers/rails_admin.rb如何在 config/initializers/rails_admin.rb 的“可见 do”块中获取“current_user”
【发布时间】:2011-07-13 04:23:13
【问题描述】:

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

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

我知道在 README 中说该示例是理论上的,但我一直在该块中找不到 current_user。我正在通过 CanCan 进行授权:

RailsAdmin.authorize_with :cancan

在 config/initializers 中 rails_admin.rb 的顶部

谁能告诉我如何让 current_user 在可见块中可用?如果用户是管理员,我只想在“列表”视图中显示某些字段。

【问题讨论】:

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


    【解决方案1】:

    由于 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

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这似乎不正确,初始化程序似乎在调用 rails_admin 路径时被调用。
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多