2012-03-18 41 views
2

說我有一個現有的Rails 3應用程序的兩款車型,我想創建一個協會:修改模型以創建關聯,執行此操作的正確方法是什麼?

我想創建一個協會,這樣我可以做的:

User.account_type 
AccountType.users 

所以一用戶只有一個帳戶類型,而帳戶類型有0個或多個用戶。

在db級別,用戶將擁有account_type_id,並且AccountType表不會有用戶的任何關聯列。

  1. 所以我的第一步是寫一個測試權嗎?因此,在我的user_spec.rb和account_type_spec.rb中,我應該創建一個簡單的測試,以查看它是否具有代理類.account_type account_type.users是否存在?還要別的嗎?

  2. 修改User.rb模型並添加belongs_to:AccountType,並在AccountType.rb中添加has_many的權利?

  3. 創建遷移腳本,我只是添加account_type_id還是使用特殊的方式來引用AccountType?

+1

IMO測試,看是否存在的方法是單元測試Rails本身。如果您尚未添加關聯,那麼使用由關聯添加的方法的測試將失敗。 – 2012-03-18 14:57:44

+0

1-看起來正確2-是的,你是正確的3-是隻是添加account_type_id – nateleavitt 2012-03-26 20:03:51

+0

我在這裏有點困惑。你想要的東西像:'AccountType.users'或'account_type.users'?因爲,你說你建立了一個'AccountType' **對象的關聯**,所以'User'模型有很多**用戶**,那麼你需要''users'表中的'account_type_id'列。如果你想實現類似於'AccountType.users'的操作,你必須編寫'AccountType'模型的'用戶'方法。你確定你想要的關係嗎?檢查此鏈接以更好地理解rails中的關聯:http://guides.rubyonrails.org/association_basics.html – Surya 2012-04-02 05:26:42

回答

0

關於測試:我會跟戴夫牛頓的評論,你應該測試你打算與此相關聯,以製造出任何行爲(這麼寫試驗,以創建關聯的能力達成一致,以查找用戶或帳戶通過這個協會等),但是測試你所描述的方法的存在可能會超出必要的程度。

你的步驟2和步驟3對我來說很合適。

rails g migration add_account_type_id_to_users account_type_id:integer 

應該生成您需要的遷移。

相關問題