ruby-on-rails - 如何在 config/initializers/rails_admin.rb 中的 "current_user" block 中获取 "visible do"

标签 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

我知道自述文件中说该示例是理论上的,但我不断发现在该 block 中找不到 current_user 。我正在向 CanCan 授权:

RailsAdmin.authorize_with :cancan

位于config/initializers中rails_admin.rb的顶部

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

最佳答案

由于 current_user 作为助手包含在 View 中,因此您可以通过绑定(bind)哈希获取它:

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 绑定(bind)的更多信息,请参阅其 wiki:https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL

希望有帮助。

关于ruby-on-rails - 如何在 config/initializers/rails_admin.rb 中的 "current_user" block 中获取 "visible do",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674065/

相关文章:

ruby-on-rails-3 - 如何创建第一个(管理员)用户(CanCan 和 Devise)?

ruby-on-rails - 如何将 CanCan 与多个设计模型集成?

ruby-on-rails - 如何在 Gitlab CI 中为 rails 项目使用缓存?

sql - Rails ActiveRecord 查询以匹配所有参数

ruby-on-rails - 如何进行多行匹配并将它们分配给哈希?

ruby-on-rails - 如何在rails中使用link_to设置参数?

python - 向列表中的项目添加空格(Python)

python - 将元素 append 到 Python 中的空列表字典

python - Python 中的字符串索引超出范围

ruby-on-rails - Multi-Tenancy 应用程序中的授权