Я пытаюсь создать именованную область действия с именем current_season, где он будет правильно идентифицировать записи, связанные с годом, в котором мы находимся. В основном достаточно просто, за исключением того, что я хочу, чтобы все в июне и позже использовали текущий год и все до июняиспользовать предыдущий год.
в рельсах 3.1 Я легко могу использовать:
scope :current_season, lambda { where('season = ?',Time.now.year) } if Time.now.month >= 6
, чтобы получить возможность работать только в том случае, если мы находимся в конце года и:
scope :current_season, lambda { where('season = ?',Time.now.year - 1) } if Time.now.month < 6
Но, кажется, расточительно называть все это дважды и не использовать вещи типа if / else или иметь возможность вызывать что-то, что я определил ниже, чтобы показать точный год, такой как:
scope :current_season, lambda { where('season = ?',:current_season_year) }
def current_season_year
if Time.now.month >= 6
Time.now.year
else
Time.now.year - 1
end
end
Но это просто смеется надо мной, когда я пытаюсь это сделать.Есть ли более чистый способ?У меня также будут область видимости: last_season и scope: previous_season, скорее всего, и они будут следовать схожей логике.
Заранее спасибо за любой совет!