缺少表列,在migrate中定义

时间:2013-10-12 19:07:59

标签: ruby-on-rails

我尝试创建一个新的Link表,并在迁移时指定了必要的列。

在db / migrate

class CreateLinks < ActiveRecord::Migration
    def change
        create_table :links do |t|
            t.integer :user_id
            t.string :url




            t.timestamps
        end
    end
end


class AddTitleToLink < ActiveRecord::Migration
  def change
    # add_column :links, :user_id, :integer
    add_column :links, :title, :string
  end
end

当我运行rails console时,Link返回

Link(id: integer, created_at: datetime, updated_at: datetime, title: string)

似乎缺少user_id(外键)和url。稍后添加的Title在表中。

我做错了吗?

2 个答案:

答案 0 :(得分:1)

您是否可以在编辑之前运行CreateLinks迁移以添加两个字段?如果是这样,您可以整天更改该文件,rake db:migrate将永远不会重新运行它。这可以解释有一个空表links,以及您在下一次迁移中添加到其中的字段。

您可以通过运行rake db:rollback来重新启动数据库。尝试两次,然后再次迁移。

答案 1 :(得分:1)

看不出有任何理由不这样做。你有可能第一次跑:

rails g model Link 

(生成迁移并RAN)

然后你手动添加:url和:user_id?

尝试跑两次:

rake db:rollback

然后再次运行

rake db:migrate

将赶上您的手动修改