【发布时间】:2020-04-16 17:41:14
【问题描述】:
我面临一个问题,我必须根据 job_trade_contractors 的 min time_out 字段对作业进行排序。 job_trade_contractors 的 time_out 字段可能为 nil。我有这样的关联:
1:job.rb
has_many :job_trades, dependent: :destroy
has_many :job_trade_contractors, through: :job_trades
2:job_trade.rb
has_many :job_trade_contractors, dependent: :destroy
3:job_trade_contractors.rb
belongs_to :job_trade, touch: true
目前,我正在通过此代码对作业应用排序:
Job.left_joins(:job_trade_contractors).order("job_trade_contractors.time_out asc")
它根据 time_out 正确地对作业进行排序,但我需要的是对 job_trade_contractors 属于特定作业的最小超时值进行排序。
假设我们有 2 个工作,每个工作有 5 个 job_trade_contractors。我们需要根据关联的 job_trade_contractors 中的最小超时值对作业进行排序。
示例 工作
j1 ->
1: job_trade_contractor ->
id: 1
time_out: 21-01-2020
2: job_trade_contractor ->
id: 2
time_out: 20-01-2020
3: job_trade_contractor ->
id: 3
time_out: 11-01-2020
4: job_trade_contractor ->
id: 4
time_out: 19-01-2020
5: job_trade_contractor ->
id: 5
time_out: 23-01-2020
j2 ->
1: job_trade_contractor ->
id: 1
time_out: 21-01-2020
2: job_trade_contractor ->
id: 2
time_out: 20-01-2020
3: job_trade_contractor ->
id: 3
time_out: 11-01-2020
4: job_trade_contractor ->
id: 4
time_out: 10-01-2020
5: job_trade_contractor ->
id: 5
time_out: 25-01-2020
结果应该是
j2 j1
因为我们有 job_trade_contractor 的 time_out 值:10-01-2020 as min in j2 和 11-01-2020 在 j1
【问题讨论】:
标签: ruby-on-rails postgresql ruby-on-rails-4 ruby-on-rails-5