2011-01-11 60 views
0

rails應用程序中的外鍵關係我設置了一個簡單的has_many關係。我想知道在設置外鍵關係時是否有任何最佳實踐。在哪裏設置與has_many通過

該應用程序旨在允許用戶創建項目和廣告,其中列表模型用於將項目與廣告連接(列表模型還包含時間戳和訂單字段)。

我的主要問題是:哪些模型應該屬於用戶模型?我認爲最簡單的解決方案是列出belongs_to用戶。這樣我就可以通過has_many關係找出哪些項目和哪些廣告屬於每個用戶。

但是,我想到這可能會留下一些空洞,這取決於我想實現的工作流程。例如,如果用戶想在創建包含這些項目的廣告之前創建一堆項目,該怎麼辦?如果用戶在創建任何項目之前創建廣告會怎樣?

基於上述,我在想,也許我應該讓廣告和項目屬於用戶。如果我這樣做,是否有任何明顯的理由也使得列出belongs_to用戶?我打算這麼做,但不知何故,它對我來說看起來多餘。

這似乎是在rails應用程序中遇到的一個非常典型的情況,所以我希望有經驗的人一直在這裏,並可能能夠分享一些見解。

謝謝!

回答

0

我想了解你擁有的一切:

用戶 廣告 項目 上市

Listing似乎是某種加入模型是涉及一個Item在一個Ad之中。

我沒有看到很多錯誤的方式來做到這一點。我想這樣做最規範的方法是隻有一個項目belong_to一個用戶,並通過它得到清單和廣告。但是你也會在那裏付出代價,無論是在寫煩人的代碼還是必須執行多個連接才能獲得廣告。

相反的極端只是讓用戶擁有一切belong_to。你的模型中有2個額外的列,但是你也有更簡單的關係。在設計模式時,您也不必擔心允許用戶使用哪些工作流程。

即使您在模型中搞砸了user_id字段,但稍後使用遷移添加這些字段也不是非常困難。