迁移成功时,rails迁移没有反映出来

时间:2016-02-24 11:31:07

标签: ruby-on-rails ruby

我创建了2个表(categoriesproducts),我做了has_manyCategory has_many :products之间的Product belongs_to :category个关联。

当我进行迁移时:

rails generate migration add_product_id_to_categories product_id:integer 

然后迁移正在运行,但未在product_id中看到Category

我尝试过多种方法,比如

add_product_id_to_category product_id:integer 

但仍面临同样的问题。

3 个答案:

答案 0 :(得分:5)

您只生成了一个迁移文件("YYYY-MM-DD")。您必须使用rails generate migration add_product_id_to_categories product_id:integer运行迁移。

答案 1 :(得分:2)

生成迁移与实际迁移不同。你只是生成它,并且为了执行你编写的内容,你需要运行它,你可以通过调用以下命令来实现:

rake db:migrate

不确定是否已运行迁移,请运行以下命令,它将告诉您所有迁移的状态。如果状态为up,则表示迁移已经运行,对于down,无法运行迁移。

rake db:migrate:status

当您运行迁移,并且希望在终端中收到已成功运行的通知时,您可以在其中添加puts语句,如下所示:

class AddColumnToCategories < ActiveRecord::Migration
  def change
    add_column :categories, :product_id, :integer, index: true
    puts "product_id column has been added into categories."
  end
end

答案 2 :(得分:1)

你试过rails generate migration AddProductIdToCategories product_id:integer吗?

如果查看迁移文件内部创建迁移,则可以在运行迁移之前查看更改方法中是否生成了任何代码。如果它没有生成任何内容,您可以手动添加它:

def change
    add_column :categories, :product_id, :integer
end