我有一个试图填充对象的黄瓜步骤,包括刚刚通过迁移添加的新列。该列名为is_active,错误为:
unknown attribute: is_active (ActiveRecord::UnknownAttributeError)
由于这一行而引发:
city = City.find_or_create_by_name_and_state(:name => attributes['City'], :state => attributes['State'], :icao_code => attributes['ICAO'], :display_order => attributes['Order'], :is_active => attributes['Active'], :current_temperature => attributes['Current'])
奇怪的是,今天早些时候,我添加了列display_order,它工作正常。
如果我从步骤中删除:is_active分配并在城市分配后添加“puts city.attributes”,则is_active在属性中列出不。但是如果我从rails控制台执行“City.new.attributes”,那么is_active属性就是。
看起来黄瓜测试没有在适当的环境中执行,尽管它 能够看到最近的display_order属性,该属性仅在开发环境中定义,最近的is_active也是如此属性。
任何想法如何让黄瓜看到属性?
谢谢,
菲尔
答案 0 :(得分:2)
rake db:migrate
rake db:test:prepare
测试环境不使用开发中使用的相同数据库。您必须运行命令rake db:test:准备在每次迁移后重新创建它,这实际上会更改数据库结构。
该命令只是根据schema.rb文件(或structure.sql,它取决于项目的配置)创建测试数据库,这些文件是在您运行迁移时创建/更新的。