He utilizado técnicas RESTful para generar un modelo (de hecho, estoy usando Devise gem, que hace eso por mí), y he agregado nuevos campos llamados first_name y last_name para el modelo. La migración fue bien. Agregué attr_accessor: first_name,: last_name al modelo y esperaba que simplemente funcionara. Pero cuando trato de asignar en masa nuevas instancias con Doctor.create ({: first_name => "MyName"}) etc., recibo errores que dicen que no puedo asignar en masa los atributos protegidos."ADVERTENCIA: No se puede asignar en masa los atributos protegidos"
Pensé que el objetivo de usar attr_accessor era evitar la protección de los campos de un modelo. ¿Puedes ayudarme a entender este mensaje?
Edición: oh, y por cierto los registros tampoco se crean. Pensé que deberían ser, ya que esto es solo una advertencia, pero no están en la base de datos.
Edit2: aquí está mi modelo
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
y el esquema, que no tiene el nombre apellido y apellidos, ya que se crean en la tabla de usuarios, que es el antepasado de los médicos. Usé herencia de mesa única.
create_table :doctors do |t|
t.integer :invitations
t.timestamps
end
y esto es la migración de cambiar la tabla de usuarios
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :type, :string
EDIT: Aquí está el archivo semilla. No incluyo el método truncate_db_table, pero funciona.
%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")
Todavía no soy muy inteligente en Rails 4, pero creo que esta pregunta es una pregunta de Rails 3. ¡La configuración predeterminada de hardcoded en 'config/application.rb' en Rails 4 está en blanco! –
http://apidock.com/rails/ActiveRecord/Base/attr_accessible/class – shilovk