Какой запрос ActiveRecord лучше для этого сценария? - PullRequest
2 голосов
/ 20 января 2012

Я получаю свой результат, но чувствую себя грязно внутри.

Как мне лучше получить ближайшую начальную дату pay_rate или home_base_assignment, которая раньше или равна заданной дате?

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

Фу!

1 Ответ

0 голосов
/ 20 января 2012

Вы можете немного реорганизовать ваши методы, используя область видимости, вот что, я думаю, вы добавите к своей модели:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...