ruby-on-rails - 创建一个根据子类的属性排序的对象数组

标签 ruby-on-rails sorting

我有类(class) Job:

class Job < ActiveRecord::Base
  has_many :stops
end

Stop 类有一个属性,datetime :arrival time

获取所有作业的数组的简洁方法是什么,并按相关站点的最早到达时间排序?

例如

如果 job_1 有两个站点,一个到达时间为下午 4 点,另一个到达时间为下午 5 点。

job_2 有两站,一站到达时间为下午 3 点,另一站到达时间为下午 6 点。

我需要数组:[job_2, job_1]

我能够实现这一点,但是采用了一种繁琐的方式,涉及循环和临时存储值。

谢谢!

最佳答案

这是个好问题! Francesco 的回答应该是你要去哪里,但如果你更喜欢使用连接而不是子系列,你还有其他一些选择。

Job.includes(:stops).order('stops.arrival_time ASC')

如果您想忽略没有任何停靠点的作业,请将 includes 替换为 joins

关于ruby-on-rails - 创建一个根据子类的属性排序的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30123939/

相关文章:

java - 如何在 Java 中实现多线程 MergeSort

sorting - ElasticSearch按名称查找并返回最便宜的

ruby-on-rails - 什么是好的代码测试比率?

r - 在其他数据框中排序和查找值

javascript - 如何对不可变映射内的项目进行排序(交换)?

ruby-on-rails - Rails AJAX 表单在验证失败后不重新填充字段

c - 用C语言对数字进行排序的简单程序

mysql - 在现有项目上从 sqlite3 更改为 mysql

ruby-on-rails - Rails 工厂与同一对象有多个关联

ruby-on-rails - 改善缓慢的 Rails 启动时间(rails 控制台、rails 服务器)