2013-02-16 65 views
1

實踐中,我正在寫一個購物網站,我們有表UserItem。一個用戶顯然是has_many物品(當他們被添加到他們的購物籃時),但是該物品,它belongs_to a User,即使許多用戶在他們的購物籃中會有相同的物品?另外,如果我想要一個用戶已添加到他們的購物籃中的物品列表,而且他們已經查看過的物品列表(用於根據搜索提出建議)會怎樣?如果我想要一些「通過」表格:BasketViewed簡單的Ruby on Rails數據庫設計

+0

如果您的查看是「最近查看的」,則可以爲臨時項目創建多態關聯。爲這些臨時項目創建一個單獨的模型,它需要包含user_id和item_id。 – kobaltz 2013-02-16 20:49:10

回答

2

當你有這麼多的一對多的關係,您可以使用HABTM模式:

Class User... 
has_and_belongs_to_many :items 

然而,大多數的網店使用orderlines時間跟上用戶所購買的物品。這意味着'用戶''has_many''命令行','項目''has_many''命令行','命令行''belongs_to''用戶'和'項目'。

也許您的訂單將只是項目的副本,並且不會有直接鏈接,因爲您不想在訂單處理完成後更改訂單。這真的取決於你的商店的重點哪個方案適合你的需求。

試着在網上找到一些例子,想想你想如何處理物品,訂單和籃子。

+1

看看這本書[帶有Rails的敏捷Web開發](http://pragprog.com/book/rails4/agile-web-development-with-rails)。這本書可以幫助你建立一個購物網站並解釋上面答案中提到的訂單行。 – 8bithero 2013-02-16 21:55:12

0

我用來分開不一樣的東西,即使這種關係是一對一的。所以首先我會推薦籃子用戶(1:1關係)。

之後,籃子包含許多項目和項目可以在多個籃子(m:n關係)。確保,也許用戶喜歡多次購買相同的物品。

視圖可以實現爲用戶和項目之間的鏈接表:用戶有很多視圖,項目有很多視圖,但一個視圖總是鏈接到一個用戶和一個項目。

+0

感謝您提供關於多個項目的提示 – user1802713 2013-02-16 22:21:40