我目前正在使用Rails 4.2.4。事情是我跑的时候
rails g migration AddCategoryRefToArticles category:references
命令,
它生成了以下迁移
def change
add_reference :articles, :category, index: true, foreign_key: true
end
由于某种原因导致category_id
为整数字段而不是预期的t.references。
create_table "articles", force: :cascade do |t|
t.string "title"
t.integer "category_id"
end
add_index "articles", ["category_id"], name: "index_articles_on_category_id", using: :btree
为什么会这样?
答案 0 :(得分:2)
add_reference
只是一个方便的助手,可以生成一个整数字段,该字段遵循要在关联中使用的命名约定。由于schema.rb
映射数据库模式,因此期望您看到特定的数据类型而不是更高级别的抽象。
我不确定为什么你会期望t.references
,但你的期望是错误的。 add_reference
文档中也对此进行了解释。
创建
user_id
整数列add_reference(:products, :user)