【发布时间】:2018-07-17 23:49:36
【问题描述】:
轨道 5
我的模型设置如下:
父亲
has_many :children, through: :another_model
儿童
has_one :father, :through => :another_model
has_many :grand_children
孙子
belongs_to :儿童
我想找到一个父亲的 Grand_Children 的平均年龄,并为多个父亲生成它(并为它们排序)。 Grand_children 中有很多可能的年龄(数字),所以我注意查询可能会很快变得非常大并且速度很慢。
这是我试图达到的一个示例(没有连接等):Father.order('ave(grand_children.age) DESC')。
我研究了几种使用 Active Record 执行此操作的不同方法,但通常示例只有 1 个关联模型深度。
有任何问题,请告诉我。
谢谢
【问题讨论】:
-
其实我对你们的关系感到困惑。为什么
GrandFatherhas_manyfathers?不过你可以试试这个宝石github.com/khiav223577/deep_pluck -
您可以添加数据库架构和示例,其中包含您想要实现的一些真实数据吗?
-
我已经改写/更新了关系,希望它们更容易理解并举个例子。
标签: ruby-on-rails activerecord ruby-on-rails-5