2014-10-06 42 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抽象出實現細節:供應商。