J'ai utilisé Reposant techniques pour générer un modèle (en fait, je suis à l'aide de Concevoir des gem, qui n'a que pour moi), et j'ai ajouté de nouveaux champs first_name et last_name pour le modèle. La Migration s'est bien passé. J'ai ajouté attr_accessor :prenom, :nom du modèle et devrait il serait juste de travail. Mais quand j'essaie de masse attribuer de nouvelles instances avec le Médecin.créer({:prenom=>"Monnom"}) etc. J'obtiens des erreurs en disant: je ne peux pas en masse attribuer des caractéristiques protégées.
Je pensais que tout le point de l'utilisation de attr_accessor était d'obtenir autour de la protectedness des champs d'un modèle. Pouvez-vous m'aider à faire sens de ce message?
Edit: oh, et par la manière dont les documents ne sont pas créés. Je pense qu'ils devraient être, puisque c'est juste un avertissement, mais ils ne sont pas sur la base de données.
Edit2: voici mon modèle
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
et le schéma, qui n'a pas la first_name et last_name parce qu'ils sont créés dans la table des utilisateurs, qui est l'ancêtre des médecins. Je l'ai utilisé seul héritage de table.
create_table :doctors do |t|
t.integer :invitations
t.timestamps
end
et c'est la migration de modifier la table des utilisateurs
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :type, :string
EDIT: voici la graine de fichier. Je ne suis pas y compris le truncate_db_table méthode, mais ça marche.
%w{doctors patients}.each do |m|
truncate_db_table(m)
end
Doctor.create(:invitations=>5, :email=>"email@gmail.com", :first_name=>"Name", :last_name=>"LastName")
Patient.create(:doctor_id=>1, :gender=>"male", :date_of_birth=>"1991-02-24")