"WARNUNG: Geschützte Attribute können nicht massenweise zugewiesen werden"
Ich habe RESTful-Techniken verwendet, um ein Modell zu generieren (in der Tat verwende ich Devise Gem, das das für mich erledigt), und dem Modell wurden neue Felder mit den Namen Vorname und Nachname hinzugefügt. Die Migration verlief gut. Ich habe attr_accessor: first_name,: last_name zum Modell hinzugefügt und erwartet, dass es einfach funktioniert. Aber wenn ich versuche, neue Instanzen mit Doctor.create ({: first_name => "MyName"}) usw. massenweise zuzuweisen, erhalte ich die Fehlermeldung, dass ich geschützte Attribute nicht massenweise zuweisen kann.
Ich dachte, der Sinn von attr_accessor besteht darin, den Schutz der Felder eines Modells zu umgehen. Können Sie mir helfen, diese Nachricht zu verstehen?
Edit: oh, und die Datensätze werden übrigens auch nicht erstellt. Ich dachte, sie sollten es sein, da dies nur eine Warnung ist, aber sie sind nicht in der Datenbank.
Edit2: hier ist mein Modell
class Doctor < User
has_many :patients
has_many :prescriptions, :through=> :patients
validates_presence_of :invitations, :on => :create, :message => "can't be blank"
attr_accessor :invitations
end
und das Schema, das weder den Vor- noch den Nachnamen enthält, da sie in der Benutzertabelle erstellt werden, die der Vorfahr der Ärzte ist. Ich habe die Vererbung einzelner Tabellen verwendet.
create_table :doctors do |t|
t.integer :invitations
t.timestamps
end
und dies ist die Migration zum Ändern der Benutzertabelle
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :type, :string
EDIT: Hier ist die Seed-Datei. Ich beziehe die Methode truncate_db_table nicht ein, aber sie funktioniert.
%w{doctors patients}.each do |m|
truncate_db_table(m)
end
Doctor.create(:invitations=>5, :email=>"[email protected]", :first_name=>"Name", :last_name=>"LastName")
Patient.create(:doctor_id=>1, :gender=>"male", :date_of_birth=>"1991-02-24")