как получить «current_user» в блоке «visible do» в config / initializers / rails_admin.rb - PullRequest
3 голосов
/ 13 июля 2011

Я пытаюсь реализовать нечто похожее на это:

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

В верхней части rails_admin.rb в config / initializers

Может кто-нибудь сказать мне, как получить current_user доступнымв видимом блоке?Я хочу показывать только определенные поля в представлении «Список», если пользователь является администратором.

Ответы [ 3 ]

2 голосов
/ 11 июня 2013

Поскольку current_user включен в качестве помощника в представлении, вы можете получить его через хеш привязок:

visible do
  bindings[:view].current_user.has_role? :admin # This works for Devise
end

Я получил идею из этого другого вопроса: Как настроить пользователя наcurrent_user при создании новой модели с использованием rails_admin

Подробнее о привязках rails_admin в ее вики: https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL

Надеюсь, это поможет.

1 голос
/ 04 августа 2011

Инициализаторы запускаются один раз при запуске приложения, поэтому я не думаю, что вы можете получить текущего пользователя из инициализатора, подобного этому.

0 голосов
/ 04 августа 2011

Я сам не пробовал, но вы можете найти это полезным:

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

Короче, определите RailsAdmin::Config.current_user_method в инициализаторе rails_admin.

...