У меня есть 4 Rails 3 области, которые я хотел бы упростить:Объединить Rails 3 сферы в метод класса
scope :age_0, lambda {
where("available_at IS NULL OR available_at < ?", Date.today + 30.days)
}
scope :age_30, lambda {
where("available_at >= ? AND available_at < ?", Date.today + 30.days, Date.today + 60.days)
}
scope :age_60, lambda {
where("available_at >= ? AND available_at < ?", Date.today + 60.days, Date.today + 90.days)
}
scope :age_90, lambda {
where("available_at >= ?", Date.today + 90.days)
}
Я думал о методе класса:
def self.aging(days)
joins(:profile).where("available_at IS NULL OR available_at < ?", Date.today + 30.days) if days==0
joins(:profile).where("available_at >= ? AND available_at < ?", Date.today + 30.days, Date.today + 60.days) if days==30
joins(:profile).where("available_at >= ? AND available_at < ?", Date.today + 60.days, Date.today + 90.days) if days==60
joins(:profile).where("available_at >= ?", Date.today + 90.days) if days==90
end
Но я не знаю, что нужно вернуть, чтобы обеспечить совместимость с областями Rails 3.
Это хороший подход? Есть лучший способ сделать это?
** Редактирование ** Я обновил логику метода. Тест If, похоже, не работает, как я ожидаю.
Прохладный идея. Какова цель? что бы вернуть себя? – gmoore
какой-нибудь фильтр. joins (: profile) .where ("available_at>?", Date.today + 90.days) – craig