我创建了2个表(categories
和products
),我做了has_many
和Category 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
但仍面临同样的问题。
答案 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