Rails 3.1,为什么我得到ActiveRecord :: UnknownAttributeError:spec测试中的未知属性?

sim*_*imo 10 activerecord rspec2 ruby-on-rails-3

我试图Student在测试中创建一个记录,如下所示:

student= Student.create!(:work_phone => "1234567890")
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

ActiveRecord::UnknownAttributeError: unknown attribute: work_phone
Run Code Online (Sandbox Code Playgroud)

但是,work_phoneStudent模型中定义并进行迁移.

这是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
Run Code Online (Sandbox Code Playgroud)

任何的想法?

jak*_*ake 28

您是否仅在测试环境中收到此错误.更具体地说,当您使用运行测试时

rake spec
Run Code Online (Sandbox Code Playgroud)

这可能是因为您没有在测试环境中运行迁移.你可以这样做,

rake db:migrate RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

或者在您的开发上运行迁移之后,如下所示.

rake db:migrate
rake db:test:prepare 
Run Code Online (Sandbox Code Playgroud)

  • 是的,这就是为什么正确,另外,我需要将attr_accessor:work_phone添加到模型中,谢谢 (2认同)