迁移不会向数据库添加列

时间:2012-04-03 10:47:18

标签: ruby-on-rails

我有两个模型ArtistPainting

我添加了以下迁移并执行了rake db:migrate

class AddArtistReferenceToPaintings < ActiveRecord::Migration
  self.up do 
    change_table :paintings do |t|
      t.references :artist
    end  
  end
end

这不会改变数据库中的任何内容。我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试

t.belongs_to :artist

代替

t.references :artist

但是如果你在irb控制台上测试,你的变体也应该工作。运行'reload'进行更新。

答案 1 :(得分:1)

似乎没错。

您是否已经运行此迁移并添加了后者?如果是,则从schema_migrations创建新的OR删除版本。

方式: 添加外键列

change_table(:suppliers) do |t|
  t.references :company
end

它创建一个company_id(整数)列

添加多态外键列

change_table(:suppliers) do |t|
  t.belongs_to :company, :polymorphic => true
end

它创建company_type(varchar)和company_id(整数)列。

有关详细信息,请参阅link