1

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

在分贝/迁移

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(id: integer, created_at: datetime, updated_at: datetime, title: string)

看起来像user_id(外键)并且url丢失了。Title,这是后来添加的,在表中。

我做错什么了吗?

4

2 回答 2

2

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

您可以通过运行rake db:rollback. 尝试这样做两次,然后再次迁移。

于 2013-10-12T19:15:18.383 回答
1

看不出这不起作用的任何原因。您是否有可能首先运行:

rails g model Link 

(生成迁移并运行它)

然后您手动添加了 :url 和 :user_id?

尝试运行两次:

rake db:rollback

然后再次运行

rake db:migrate

这将赶上您的手动修改

于 2013-10-12T19:15:20.207 回答