2012-10-18 37 views
0

我需要弄清楚如何在mongoid中建立最好的模型,我有一個畫廊模型和一個圖像模型。我需要能夠在多個文檔中引用圖像,並且我需要每個圖庫允許圖像在圖庫內排序。在MySQL中,我會用連接表來做到這一點,但我似乎無法弄清楚如何用mongodb/mongoid來做到這一點。任何幫助將不勝感激。通過mongoid中的樣式關係建模has_many的正確方法是什麼?

回答

0

has_and_belongs_to_many,這裏你不需要連接表。在mongoid HABTM在兩側存儲ID數組。因此,如果你定義:

class Gallery; has_and_belongs_to_many :images; end 
class Image; has_and_belongs_to_many : galleries; end 

您將在庫文件image_idsgallery_ids圖像文件。在畫廊排序圖像還可以,gallery.images是關係代理,你可以鏈多個條件篩選/排序結果:

gallery.images.desc(:updated_at) 
gallery.images.asc(:user_id) 
gallery.images.asc(:my_sort_order_from_drag_drop) 
+0

但如果我需要一個單獨的排序順序爲每個畫廊這種情況下(圖像在2畫廊需要爲每個畫廊分別排序數字)我不認爲這樣做會奏效。我想我不得不求助於第三張表,類似於連接表,但我想我可以在圖庫中嵌入排序表。 – thargor

+1

是的,在這種情況下,將合併文檔嵌入到圖庫中將是您最好的選擇。如果你走這條路線,你不得不照顧圖庫圖像的n + 1查詢。 – rubish

相關問題