2013-05-04 2 views
-1
def create 
    @author = User.find(current_user) 
    pub_params = params[:publication] 
    ## 
    #bcids = pub_params['categorizations_attributes']['0']['book_category_id'] 
    #pub_params.delete('categorizations_attributes') 
    #pub_params['categorizations_attributes'] = Hash.new() 
    #bcids.each_with_index do |i, bcid| 
    # if i.to_i > 0 
    # pub_params['categorizations_attributes'][i] = Hash.new() 
    # pub_params['categorizations_attributes'][i]['book_category_id'] = bcid 
    # end 
    #end 
    @publication = @author.publications.new(pub_params) 
    #setup_sti_model 

    respond_to do |format| 
    if @publication.save 
     format.html { redirect_to @publication, notice: 'Publication was successfully created.' } 
     format.json { render json: @publication, status: :created, location: @publication } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @publication.errors, status: :unprocessable_entity } 
    end 
    end 
end 

# PUT/Публикации/1 # PUT /publications/1.jsonНе удается массового правопреемником защищенные атрибуты: category_id

Я получаю эту ошибку всякий раз, когда я пытался добавить новую публикацию.

+0

Поиск ошибки «Невозможно назначить защищенные атрибуты» и прочитать некоторые - применимы ли какие-либо проблемы/причины? (Если предыдущий ответ был «Нет», посмотрите еще раз :) – user2246674

+0

Возможный дубликат ["ПРЕДУПРЕЖДЕНИЕ: невозможно назначить защищенные атрибуты"] (http://stackoverflow.com/questions/3944288/warning-cant-mass -assign-protected-attributes) – aromero

ответ

1

В вас модель использования

attr_accessible :category_id 

Читать this и this знать причину его использования. Вы предоставляете доступ к записи данных в это поле.

+0

Вы можете принять это, нажав на значок галочки, если он решает вашу проблему. – qmaruf

+0

Спасибо за ответ, но я получаю эту ошибку: undefined method 'attr_accessible 'для # user1896696

+0

Проверьте это SO сообщение http://goo.gl/td2Xe – qmaruf

0

Не бить мертвую лошадь, но две другие ответчики являются правильными. Чтобы предотвратить уязвимости при массовом назначении, вам необходимо явно указать, какие поля могут быть массово обновлены.

Вы также можете использовать attr_protected, который устанавливает черный список для полей, которые не могут быть массово обновлены, но предпочтительным методом является whitelisting through attr_accessible.

Смежные вопросы

 Смежные вопросы