Могу ли я применить методы к условию model.where, чтобы получить все объекты, созданные в конкретном месяце? - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь применить функцию .where к моей модели с именем news, чтобы получать все новости published(represented by DateTime) за определенный месяц.

Я пытался заставить работать следующий фрагмент кода:

news.where(:publish_time.strftime('%B %Y') => "month year") 

Но, похоже, не поддерживается такой вызов, поскольку :publish_time является символом, а не значением.

Есть ли другой способ сделать это, или я должен создать столбец, который содержит месяц и год публикации?

Я нашел другие источники, которые утверждают, что вы должны создать диапазон DateTime и проверить, находится ли объект в этом диапазоне. Это, однако, кажется чрезвычайно склонным к СУХОЙ и не открытой для дополнений.

1 Ответ

3 голосов
/ 12 июня 2019

Добавьте это в вашу новостную модель:

scope :published_in_month, ->(datetime) { where(publish_time: datetime.beginning_of_month..datetime.end_of_month) }

Тогда вы можете сделать:

News.published_in_month(some_datetime)

т.е.:

News.published_in_month(Datetime.new(2019, 06, 01))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...