2017-02-22 57 views
0

我想弄清楚適合我的模型的ActiveRecord協會。我建立了一頓定製和訂購系統,一個網站,用戶可以從一些項目選擇和建立一個膳食並重復此多次單個訂單用戶,訂單,膳食,項目和他們的ActiveRecord協會

我目前的設置是如下:

用戶

has_many :orders, :dependent => :destroy 
has_many :meals, through: :orders 

訂購

belongs_to :user 
has_and_belongs_to_many :meals 

膳食

has_and_belongs_to_many :orders 
has_and_belongs_to_many :items 

項目

has_and_belongs_to_many :meals 

我想,那麼我的問題有兩個部分:

1)沒有我的當前設置允許多個項目被分配到一餐,並有可能其他餐點單。

2)我將能夠訪問用戶的上一次用餐以提供新訂單時的快捷方式。

從第一次提問問題提前感謝一堆!

回答

0

對於你的第一個問題,是的,你已經建立了你的膳食和項目之間的多對多關係(假設你有正確命名的數據庫列)。

對於第二個問題,您可能需要爲它自定義查詢,因爲我不確定是否設置了活動記錄來執行要求它執行的多層查詢(即將所有膳食從給定用戶的所有訂單)。像

past_meals = Set.new

users.orders.each {|o| past_meals += o.meals}東西肯定會工作,但可以作出更有效的,如果你需要它。

但是,即使has_many_and_belongs_to的確適用於您正在進行的操作,因此不推薦使用它。社區更贊成讓一個連接表與這個關係做一個has_many_through關係。

你絕對不必這樣做,但大多數人會建議,它可以爲你節省一些工作。