2016-04-26 4 views
0

Вот мое приложение RubyOnRails. У меня есть ActiveRecord:Rails 3.2.12 Невозможно назначить защищенные атрибуты

class Deposit < ActiveRecord::Base 
    attr_accessible :fk, :abs_kod, :neres 
    ... 
end 

также у меня есть контроллер с кодом:

list.each do |d_item| 
     deposit = Deposit.find_or_create_by_fk(d_item[:fk]) 
     deposit.update_attributes d_item 
end 

Но я не могу сохранить любое значение в поле «neres». Я получил ошибку

Can't mass-assign protected attributes: neres 

и в моей базе данных я вижу

| fk | abs_kod | neres | 
| 1 | 1  |  | 

я пытался сделать, как этот

deposit = Deposit.find_or_create_by_fk(d_item[:fk]) 
deposit.neres = d_item[:neres] 
deposit.update_attributes d_item 
deposit.neres = d_item[:neres] //twice, just in case 

Я не помогает. Также я попытался удалить attr_accessible из активной записи вообще. Это также не помогает. В чем проблема?

P.S .: Адреса «неры» были добавлены позже, чем «abs_kod» и «fk».

ответ

0

Чтобы использовать сильные Params в Rails приложения менее 4-й версии, вам нужно добавить драгоценный камень в свой драгоценный файл

gem 'strong_parameters' 

и в файле application.rb в конфигурации набора whitelist_attributes к ложному

config.active_record.whitelist_attributes = false 

В контроллере не забудьте добавить метод model_params и перечислить атрибуты, которые должны быть включены в белый список.

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