Rails 3.1 - не может массово назначать защищенные атрибуты (даже если они добавлены в attr_accessible) - PullRequest
5 голосов
/ 11 ноября 2011

У меня есть вложенная форма categories для stores, и она указана как attr_accessible в модели магазина. Но все равно продолжайте получать следующую ошибку:

WARNING: Can't mass-assign protected attributes: category_ids

Я перепробовал все варианты attr_accessible в модели магазина:

attr_accessible :categories
attr_accessible :category
attr_accessible :category_id
attr_accessible :category_ids

Никто из них не работает! Обе эти модели имеют has_and_belongs_to_many (и имеют объединяющуюся таблицу под названием category_stores).

Буду очень признателен за любой совет (я уже два дня бьюсь головой об стену).

UPDATE

Я реализовал временное исправление (которое довольно избыточно и не нужно, если рельсы только что присоединились к вышеупомянутой проблеме). Я исправил это, переписав метод create для ActiveAdmin и выполнив цикл для вставки данных ассоциации:

  controller do
    def update
      @store = store.find(params[:id])
      if @store.update_attributes(params[:store])
        @store.categories.delete_all
        params[:store][:category_ids].each do |category_id|
          @store.categories << Category.find(category_id) unless category_id.blank?
        end
        redirect_to :action => :index
      else
        redirect_to :action => :edit, :notice => "Something f'ed up"
      end
    end

  end

1 Ответ

4 голосов
/ 11 ноября 2011

Я полагаю, что если у вас есть объединяющая таблица под названием category_stores, ваши назначения будут более похожи на:

class Store

    has_many :categories, :through => :categories_stores

с аналогичной настройкой в ​​модели Categories.

InНапример, если вы создаете магазин и хотите создать / добавить категории для этого магазина, вам также может понадобиться добавить:

    accepts_nested_attributes_for :categories_stores

, чтобы добавить его в эту таблицу.

Подробнее о вложенных атрибутах можно прочитать здесь: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...