2014-02-19 91 views
1

我真的很難理解這個概念如何工作。首先,我將使用devise gem進行用戶驗證和激活,但我需要知道我的遷移應該如何。我有一個唯一的密鑰(用戶將被授予),將用於激活一個帳戶。Has_one,Belongs_to遷移

因此,這裏是我的代碼看起來像很早,你要知道:

用戶模型

class User < ActiveRecord::Base 
    has_one :safe 
    has_many :contacts 
end 

安全模式

class Safe < ActiveRecord::Base 
    belongs_to :user 
end 

CreateSafes遷移文件

class CreateSafes < ActiveRecord::Migration 
    def change 
    create_table :saves do |t| 
     t.string :safe_key 

     t.timestamps 
    end 
    end 
end 

鉻eateUsers遷移

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :email 
     t.string :password 

     t.timestamps 
    end 
    end 
end 

我真的只是不知道如果我爲user_id值添加到安全遷移表,還是我只使用safe_key,因爲這將是一個完全獨特的價值。任何幫助和智慧將不勝感激。謝謝。

+0

根據我的經驗,您從不直接觸摸遷移文件,您可以使用模型生成器。你可以通過查看你的模式文件來判斷你的表格是什麼樣的。如果你犯了一個錯誤,你只需創建一個新的遷移來修復它。 – Alexander

+0

好的,考慮到手頭問題的整體簡單性,我甚至會考慮在模型層面而不是數據庫層面進行。 – iandeejay

回答

1

是的,手動添加user_id到安全表。在關聯中,Rails將表中的外鍵與:belongs_to存儲在一起。然後,您可以使用safe.user來獲取用戶,或者使用user.safe以獲得安全。

+0

我是否也將safe_id添加到用戶表中? – iandeejay

+0

不,你不需要因爲Rails處理它的關聯。即使在SQL中,使用模型的方式是,如果您有安全或用戶,則可以使用適當的查詢找到另一個。 – Alexander