通过mongoid中的样式关系来模拟has_many的正确方法?

时间:2012-10-18 18:46:36

标签: ruby-on-rails-3 mongoid

我需要弄清楚如何在mongoid中建模这个,我有一个画廊模型和一个图像模型。我需要能够在多个文档中引用图像,并且我需要每个图库以允许图像在图库中进行排序。在mysql中我会用连接表来做这个,但我似乎无法弄清楚如何使用mongodb / mongoid做到这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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_ids,在图像文档中使用gallery_ids。也可以在图库中对图像进行排序,gallery.images是一个关系代理,您可以链接更多条件来过滤/排序结果:

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