ruby-on-rails-3 - Mongoid,如何通过 references_one 关联(以及后续关联)进行 order_by?

标签 ruby-on-rails-3 mongodb associations sql-order-by mongoid

简单模型:

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/

相关文章:

ruby-on-rails - rails : Unknown attribute during model create

ruby-on-rails - Devise 中的摘要式身份验证

javascript - 如何使用 OAuth 2.0 实现 Web 小部件

node.js - 如何替换 ObjectId 引用。与来自 MongoDB 的实际对象一起使用(最好在服务器端)?

mongodb - 通过 REST API 公开 mongodb 查询是否安全?

R:关于无法将 NA 强制转换为 nsparseMatrix 的先验错误

javascript - 从 Rails 的集合中返回选定的值并将其发送到 URL

node.js - 无法填充对象数组

Java多对多关联映射

hibernate - 带有关联表的 JPA 注解