2
我得到了我的结果,但我觉得里面都脏。什么是这种情况下更好的ActiveRecord查询
如何才能更好地获取最近的pay_rate或home_base_assignment start_date,该值是早于还是等于给定日期?
class Employee < ActiveRecord::Base
has_many :home_base_assignments
has_many :position_assignments
has_many :pay_rates, :through => :position_assignments
def closest_prior_assignment_start(date)
closest_prior_pay_rate_start =
pay_rates.where("pay_rates.start_date <= ?", date)
.order(:start_date).last.start_date
closest_prior_home_base_start =
home_base_assignments.where("start_date <= ?", date)
.order(:start_date).last.start_date
[closest_prior_pay_rate_start, closest_prior_home_base_start].sort!.last
end
end
Yuck!
感谢。当然这是一个好主意,但我发布的代码只是为了解释这个问题。我认为真正的问题是如何避免两个查询和使用Ruby数组,当然有一个单一的查询解决方案。 – Blastula