ActiveModel::MassAssignmentSecurity::Error: Kann nicht mit Massen-weisen protected Attribute:
Bin ich auf das tutorial Ruby on Rail 3 Essential Training aus Lynda.com. Ich bin mit eine schwierige Zeit erstellen eines Active Record-Eintrag. Dies ist der Fehler, ich bekomme in meiner Konsole.
1.9.3p125 :007 > user = User.new(:first_name => "Mike", :last_name => "Jones")
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: first_name, last_name
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:48:in `process_removed_attributes'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:20:in `debug_protected_attribute_removal'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:12:in `sanitize'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security.rb:230:in `sanitize_for_mass_assignment'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.3/lib/active_record/attribute_assignment.rb:75:in `assign_attributes'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.3/lib/active_record/base.rb:498:in `initialize'
from (irb):7:in `new'
from (irb):7
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>`
Dies ist, was ich in meinem Modell:
class User < ActiveRecord::Base
attr_accessible :first_name, :last_name
end
Was mache ich falsch. Ich habe die rails 3.2.3
InformationsquelleAutor cw.prime | 2012-04-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, die Konsole neu starten. Wenn Sie das Modell erstellt haben für den Benutzer, nachdem die Konsole gestartet wurde, starten Sie es.
neu laden! in der Konsole sollte das zurückladen von der Konsole, so dass Sie nicht haben, um es neu zu starten
InformationsquelleAutor Maciek Simm
Aus, was ich weiß, dass lynda Kurs wurde entwickelt auf rails3 und in rails 3.2.3 es gibt keine Masse-Belegung standardmäßig. Fahren Sie Ihr Modell, und fügen Sie attr_accessible :name :position :sichtbar. Im Grunde müssen Sie jedes Attribut, das Sie wollen, um Masse zuordnen.
InformationsquelleAutor Michał Korzeniowski
Ohne irgendwelche Vorsichtsmaßnahmen, die Masse-Zuordnung erlaubt es Angreifern, eine beliebige Datenbank-Spalte-Wert, daher wurde es standardmäßig deaktiviert.
Die detaillierte Beschreibung ist in der Ruby On Rails Security Guide.
InformationsquelleAutor vbali
Habe ich nur noch die attr_accessible :first_name, :last_name, :username Linie um die Modelle, die Datei.
Dieser arbeitete für mich.
InformationsquelleAutor Ryan
War ich zu folgenden zusammen das tutorial Ruby on Rail 3 Essential Training aus Lynda.com wenn jemand das gleiche problem hatte, hier ist was für mich gearbeitet,
Schalten Sie die Sicherheitseinstellungen. Öffnen Sie config/application.rb und config ändern.active_record.whitelist_attributes auf false statt true. Dadurch wird Ihre app ein wenig weniger sichere, aber erlaubt Sie zu schnell vorwärts zu bewegen mit dem tutorial.
dies ist aus: http://www.lynda.com/Ruby-on-Rails-3-tutorials/essential-training/55960-2/faqs
InformationsquelleAutor Barry G
Stellen Sie sicher, um
attr_accessible :first_name, :last_name
im User-model und nicht im controller.InformationsquelleAutor B Seven