Rails 3.1 - Невозможно массово назначать защищенные атрибуты (даже если они добавлены в attr_accessible)

У меня есть вложенная форма категорий для магазинов , и она указана как 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).

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

ОБНОВЛЕНИЕ

Я реализовал временное исправление (которое довольно избыточно и не нужно, если рельсы просто придерживаются вышеуказанной проблемы). Я исправил это путем перезаписи метода 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
5
задан Hopstream 11 November 2011 в 12:07
поделиться