【问题标题】:Rails Generating ave for associated modelRails 为关联模型生成 ave
【发布时间】: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 个关联模型深度。

有任何问题,请告诉我。

谢谢

【问题讨论】:

  • 其实我对你们的关系感到困惑。为什么GrandFather has_many fathers?不过你可以试试这个宝石github.com/khiav223577/deep_pluck
  • 您可以添加数据库架构和示例,其中包含您想要实现的一些真实数据吗?
  • 我已经改写/更新了关系,希望它们更容易理解并举个例子。

标签: ruby-on-rails activerecord ruby-on-rails-5


【解决方案1】:

对于您可以使用的任何模型,您都会看到组合爆炸。给 Grandfather 一个 average_grandson_age 属性会更有效,并且每次添加儿子时都简单地更新它。

【讨论】:

  • 谢谢尤里。我读过以前的帖子不这样做,但它们是针对标准的第一级关联的。
猜你喜欢
  • 1970-01-01
  • 2017-03-14
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多