@shmigawhite

Почему после перехода на Rails 4 в Rails Admin при сохранении появляется ошибка «Can't mass-assign protected attributes for»?

Проблема в том что раньше я в моделях писал примерно так:
attr_accessible :name, :value, :var, as: :admin
а в rails_admin.rb писал
config.attr_accessible_role { :admin }
Но с новой версией метод attr_accessible_role убрали. Я понимаю, что в RoR 4 используется strong parameters. Но я не хотел бы менять много кода и поэтому просто добавил gem 'protected_attributes'. Но вот появилась проблема с админкой Rails admin при сохранении выдает ошибку:
Can't mass-assign protected attributes for.
  • Вопрос задан
  • 2863 просмотра
Пригласить эксперта
Ответы на вопрос 2
Суть состоит в том, что аттрибуты, которые можно редактировать "пачкой" должны быть определены в контроллере, а не в модели.

Чтобы избавиться от Вашей ошибки, в контроллере вызовите на хеше params метод permit и передайте ему список доступных для редактирования аттрибутов. Примерно так:
class PeopleController < ApplicationController
  def create
    Person.create(person_params)
  end

  private

  def person_params
    params.require(:person).permit(:name, :age)
  end
end
Ответ написан
@Mox
Team Lead, RoR, React/React Native
Был еще какой-то gem для быстрой миграции старых приложений.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы