2012-01-04 12 views
10

estoy tratando de crear un registro Student en una prueba, así:Rails 3.1, ¿por qué obtengo el atributo ActiveRecord :: UnknownAttributeError: unknown en la prueba de especificación?

student= Student.create!(:work_phone => "1234567890") 

pero me sale este error:

ActiveRecord::UnknownAttributeError: unknown attribute: work_phone 

Sin embargo, work_phone se define en el modelo Student, y emigraron.

Aquí es el modelo Student:

class Student < ActiveRecord::Base 

    validates_length_of :work_phone, :is => 10, :message => 'must be 10 digits, excluding special characters such as spaces and dashes. No extension or country code allowed.', :if => Proc.new{|o| !o.work_phone.blank?} 

    attr_accessible:work_phone 

end 

Alguna idea?

Respuesta

28

¿Está recibiendo este error solo en su entorno de prueba. Más específicamente, cuando se ejecutan pruebas usando

rake spec 

Esto podría estar sucediendo becase no ha ejecutado sus migraciones en sus entornos de prueba. Usted puede hacer cualquiera,

rake db:migrate RAILS_ENV=test 

o después de haber de haber ejecutado la migración en su desarrollo, como a continuación.

rake db:migrate 
rake db:test:prepare 
+2

Sí, esa es la razón, también, necesito agregar attr_accessor: work_phone al modelo, gracias – simo

+0

La preparación de la base de datos de prueba con 'rake db: test: prepare' lo arregló para mí, gracias. –

1

Agregar solo attr_accessor: work_phone to mode también funciona.

+0

Sospecho que funcionó porque ahora tiene un atributo en el modelo. Pero podría ser solo guardarlo solo en esa instancia. Intente volver a cargar el modelo y vea si todavía puede encontrar el valor allí. Si desea asegurarse de que también se guarde en la base de datos, deberá asegurarse de que el esquema de la base de datos en el que está guardando los registros también tenga una columna para el mismo. (lo que significa asegurarse de que haya ejecutado migraciones en su base de datos de prueba en este caso). – jake

Cuestiones relacionadas