2016-04-26 8 views
0

Hier ist meine RubyOnRails-Anwendung. Ich habe eine Activerecord:Schienen 3.2.12 Kann geschützte Attribute nicht massenweise zuweisen

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

Ich habe auch einen Controller mit Code:

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

Aber ich kann nicht jeden beliebigen Wert in "Neres" Feld speichern. Ich habe einen Fehler

Can't mass-assign protected attributes: neres 

und in meiner Datenbank sehe ich

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

Ich habe versucht, wie dies ich nicht helfen

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 

zu tun. Auch ich habe versucht, attr_accessible von der aktiven Aufzeichnung überhaupt zu entfernen. Es hilft auch nicht. Was ist das Problem?

S.S .: Attribut "neres" wurde später als "abs_kod" und "fk" hinzugefügt.

Antwort

0

Um starke params in Rails-Apps nutzen, weniger als Version 4, benötigen Sie den Edelstein zu Ihrem Juwel Datei

gem 'strong_parameters' 

und in der application.rb Datei in config-set whitelist_attributes auf false

config.active_record.whitelist_attributes = false 
hinzufügen

Stellen Sie sicher, dass Sie im Controller eine model_params-Methode hinzufügen und die Attribute auflisten, die auf die Whitelist gesetzt werden müssen.

Verwandte Themen