【发布时间】:2011-04-04 21:12:38
【问题描述】:
我有一个对我来说似乎很简单的要求:我想根据子类的属性对父类进行排序。
class owner
has_many :tasks
end
class task
belongs_to :owner
end
现在我想根据任务的截止日期对所有者进行排序,以便拥有“最接近”截止日期的任务的所有者排在第一位,等等
我可以在 Ruby 中通过数组排序来做到这一点,但我的记录集很大,我需要用 AR / DBMS 来做到这一点..
更新:
当我在思考这个问题时,我想到了部分解决方案,尽管我不知道如何在 AR 中实现。
要根据所有者的任务对所有者进行排序,只有一个任务(每个所有者)是相关的,即截止日期最近的任务。
我将如何使用 AR 为我获取所有所有者,按他们的任务和最接近的截止日期排序?
更新 2:
Task.order("due_date DESC").maximum("due_date", :group => 'owner')
实际上会给我所有者对象,作为有序哈希的一部分([所有者] =>“due_date”)以正确的顺序排序。万岁!现在唯一的问题是,我如何告诉 AR 使用所有者对象进行 eager_load 所有相关任务。因为此时每次我调用它都会触发一个查询
owner.tasks.each do |t|
在我看来。
任何帮助表示赞赏,我对这个(简单的??)问题很感兴趣,
欧文
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord