简单模型:
class hat
embedded_in :owner
field :color
end
class owner
embedds_one :hat
referenced_in :house
field :name
end
class house
references_one :owner
field :number
end
简单地说,我们有与所有者关联的房屋集合,所有者可以有一顶彩色帽子。
我可以简单地按编号对房子进行排序:
House.all.order_by( [[ :number, :asc ]])
但我想要的是以房主的名义订购房子,理想情况下我想写:
House.all.order_by( [[ :'owner.name', :asc ]])
但是没用...
更进一步,我希望能够根据主人帽子的颜色对房屋进行分类
House.all.order_by( [[ :'owner.hat.color', :asc ]])
知道如何在不重写所有内容的情况下实现这一目标:)
谢谢
亚历克斯
最佳答案
点符号仅适用于嵌入文档,但您有 2 个集合 - 房屋和所有者。 在 MongoDB 的所有者记录之一中,您只有字段 house_id,在其中一个房屋记录中,您与所有者模型没有任何联系。 所以唯一的方法是获取所有房屋,然后使用 Enumerable#sort 对获得的集合进行排序。
关于ruby-on-rails-3 - Mongoid,如何通过 references_one 关联(以及后续关联)进行 order_by?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452000/