如何使用Rails生成迁移以添加引用?

时间:2016-01-04 09:09:01

标签: ruby-on-rails ruby-on-rails-4

我目前正在使用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

为什么会这样?

1 个答案:

答案 0 :(得分:2)

add_reference只是一个方便的助手,可以生成一个整数字段,该字段遵循要在关联中使用的命名约定。由于schema.rb映射数据库模式,因此期望您看到特定的数据类型而不是更高级别的抽象。

我不确定为什么你会期望t.references,但你的期望是错误的。 add_reference文档中也对此进行了解释。

  

创建 user_id整数

add_reference(:products, :user)