2014-10-06 96 views
0

我想简化我的模型之间的关系has_manybelongs_to。 我有User模型和Quote模型。而且每个引用都属于用户,而且evry用户有很多引号。has_many realation是否需要外键?

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

但我仍然不知道外键的东西。 Rails是否会在后台自动执行(当我添加has_manybelongs_to)还是应该添加手动移植user_id列添加到Quotes表? 我应该在db_schemauser_id列吗?

+0

号Rails没有。但在将模型迁移到数据库之前迁移报价模型时,可以指定't.integer:user_id',以便将其视为外键 – Kushal 2014-10-06 09:20:45

回答

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抽象出实现细节:供应商。