我使用以下代码将字段director
添加到现有的movies
表中:
class CreateMovies < ActiveRecord::Migration
def up
create_table :movies do |t|
t.string :title
t.string :rating
t.text :description
t.datetime :release_date
# Add fields that let Rails automatically keep track
# of when movies are added or modified:
t.timestamps
end
add_column :movies, :director, :string
end
def down
drop_table :movies
end
end
我已经看过this,但不同之处在于我坚持使用
rake db:test:prepare command after i add my new field.
当我运行rake db:test:prepare
然后我运行我的cucumber
时,它给了我一个erorr:
unknown attribute 'director' for Movie. (ActiveRecord::UnknownAttributeError)
这意味着我无法将字段director
添加到table movies
,
那么这里有什么问题?
答案 0 :(得分:2)
请尝试以下代码:
rails g migration AddDirector
然后,在相应的迁移中
def change
add_column :movies, :director, :string
end
执行,rake db:migrate
在电影控制器中,添加&#34;导演&#34;在movie_params中
答案 1 :(得分:0)
db:test:prepare
使用db/schema.rb
重新创建数据库。
这将解决您的问题:
bin/rake db:rollback
bin/rake db:migrate
答案 2 :(得分:0)
进行任何迁移时,它会保存在架构中
回滚迁移,进行更改然后再次迁移
如果您的上一次迁移是20150923000732_create_movies.rb迁移,则可以使用以下命令回滚:
rake db:rollback
否则,您可以使用VERSION简化特定的迁移:
rake db:migrate:down VERSION=20150923000732
回滚迁移后,请更改迁移文件并重新迁移。