has_many realation是否需要外键?

时间:2014-10-06 09:16:08

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

我想在我的模型之间建立简单的has_manybelongs_to关系。 我有User模型和Quote模型。每个引用属于用户,evry用户有很多引号。

我研究了这个:http://guides.rubyonrails.org/association_basics.html

但我仍然不知道外键是什么。 Rails会在后台自动执行此操作(当我添加has_manybelongs_to时),还是应该添加user_id列添加到Quotes表的手动迁移? 我的user_id中应该有db_schema列吗?

1 个答案:

答案 0 :(得分:1)

应在迁移中定义外键。如果您使用生成器,Rails将生成一个迁移,可能如下所示:

class CreateQuotes < ActiveRecord::Migration
  def change
    create_table :quotes do |t|
      t.string :title, null: false
      t.text :content, null: false

      t.references :user
      t.timestamps
    end
  end
end

语句t.references :user将生成您的外键列,在这种情况下称为user_id

以下是Rails Guides

的引用
  

使用t.integer:supplier_id使外键命名明显且明确。在当前版本的Rails中,您可以使用t.references:supplier来抽象出这个实现细节。