2012-01-04 3 views
10

Я пытаюсь создать Student запись в тесте, как это:Rails 3.1, почему я получаю ActiveRecord :: UnknownAttributeError: неизвестный атрибут в тесте spec?

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

, но я получаю эту ошибку:

ActiveRecord::UnknownAttributeError: unknown attribute: work_phone 

Однако work_phone определяется в Student модели, и мигрировали.

Вот 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 

Любая идея?

ответ

28

Вы получаете эту ошибку только в тестовой среде. Более конкретно, при выполнении тестов с использованием

rake spec 

Это может происходить Becase вы не запускать миграции на тестовых средах. Вы можете сделать,

rake db:migrate RAILS_ENV=test 

или после того, пробежав миграции на своем развитии, как показано ниже.

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

Да, вот почему, мне нужно добавить attr_accessor: work_phone к модели, спасибо – simo

+0

Подготовка тестовой базы данных с помощью 'rake db: test: prepare' исправила это для меня, спасибо. –

1

Только добавление attr_accessor: work_phone для модели также работает.

+0

Я подозреваю, что это сработало, потому что теперь у вас есть атрибут на модели. Но это может быть просто спасение только в этом случае. Попробуйте перезагрузить модель и посмотрите, сможете ли вы найти ее там. Если вы намереваетесь убедиться, что он также будет сохранен в базе данных, тогда вам нужно будет убедиться, что схема базы данных, в которую вы сохраняете записи, также имеет столбец для того же самого. (это означает, что вы должны выполнить миграцию в тестовой базе данных в этом случае). – jake

Смежные вопросы