Ich habe RESTful Techniken verwendet, um ein Modell zu generieren (tatsächlich verwende ich Devise gem, was das für mich tut), und ich habe neue Felder namens first_name und hinzugefügt Nachname zu dem Modell Migration ging 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 => "MeinName"}) usw. massenweise zuzuweisen, bekomme ich Fehler, die sagen, dass ich geschützte Attribute nicht massenweise zuweisen kann."WARNUNG: Kann keine geschützten Attribute zuweisen"
Ich dachte der ganze Sinn der Verwendung von attr_accessor war, um die Schutzwürdigkeit der Felder eines Modells zu umgehen. Kannst du mir helfen, diese Botschaft zu verstehen?
Edit: oh, und übrigens die Datensätze werden auch nicht erstellt. Ich dachte, sie sollten 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, die nicht den first_name und last_name haben, weil sie in der Benutzer-Tabelle erstellt werden, die die Vorfahren der Ärzte sind. Ich habe die Vererbung einzelner Tabellen verwendet.
create_table :doctors do |t|
t.integer :invitations
t.timestamps
end
und dies ist die Migration der Benutzer-Tabelle
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :type, :string
EDIT zu ändern: hier ist die Seed-Datei. Ich schließe die truncate_db_table-Methode 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")
Ich bin noch nicht sehr klug auf Rails 4, aber ich denke, diese Frage ist eine Rails 3 Frage. Die voreingestellte hardcodierte Konfiguration in 'config/application.rb' in Rails 4 ist leer! –
http://apidock.com/rails/ActiveRecord/Base/attr_accessible/class – shilovk