2012-10-18 40 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

相关问题