RailsAdmin enum отображает существующее значение записи - PullRequest
0 голосов
/ 28 января 2019

Я определил модель пользователя, в которой есть классическая роль

class User
enum role:[:user, :poweruser, :admin, :superadmin]

. Сейчас я использую RailsAdmin для управления полями пользователя в файле rails_admin.rb .Сначала я управлял атрибутом роли следующим образом:

edit do
field :email do
  required true
end
field :password 
field :password_confirmation 
field :role 
...

Все было хорошо.Отображается текущее значение (здесь poweruser ), я автоматически получаю комбо от RailsAdmin с 4 указанными значениями.Отлично!

enter image description here

Теперь я хочу динамически управлять списком ролей: мне нужно ограничить список ролей, связанных с текущим зарегистрированным пользователем.Поэтому я использую функцию : enum RailsAdmin следующим образом:

field :role, :enum do
          required true
          enum do
            if bindings[:view]._current_user.superadmin?
              {user:0, poweruser:1,admin:2,superadmin:3}
            elsif  bindings[:view]._current_user.admin?
              {user:0, poweruser:1,admin:2}
            else
              {user:0}
            end
          end
      end

Это работает, список корректно ограничен в соответствии с текущей записанной ролью пользователя.

enter image description here

Однако мне бы хотелось, чтобы начальное значение роли было установлено правильно, это значение вообще не отображается: вместо начального значения poweruser , отображается слово Search ( Chercher по-французски).Как я мог решить эту проблему?

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Спасибо, Гильермо, но это не отвечает моей проблеме.Проблема в том, что railsadmin не может выбрать поле enum при редактировании.Это не относится к значению по умолчанию для новой записи.

Теперь я обнаружил, что это открытый вопрос о railsadmin gem, и нашел следующую ссылку: Не выбирается поле enum при редактировании # 2669 и получил обходной путь от Ричард Веннеман

Мне нужно изменить код в файле app / views / rails_admin / main / _form_enumeration.html.haml и переопределить существующийкодировать:

= form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: form.object.class.send(field.method_name.to_s.pluralize)[field.form_value] }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search') })

Теперь работает нормально!Так что эта проблема закрыта для меня, до официальной версии railsadmin!

0 голосов
/ 29 января 2019

Вам необходимо определить блок default_value

  rails_admin do
    edit do
      field :role do
        default_value do
          :poweruser
        end
      end
    end
  end
...