我得到了我的结果,但我觉得里面都很脏。
如何才能更好地获得最接近或等于给定日期的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
呸!
答案 0 :(得分:0)
你可以使用范围重构你的方法,这是我认为你添加到模型中的东西:
scope :lastest, order("start_date DESC")
closest_prior_pay_rate_start =
pay_rates.where("pay_rates.start_date <= ?", date).latest
closest_prior_home_base_start =
home_base_assignments.where("start_date <= ?", date).latest