2015-03-09 2 views
0

Использование Rails 4, у меня есть набор данных, где мне нужны только данные, где дата находится в последний день месяца, в любой месяц, но только если дата - последний день месяца.Rails 4 найти данные, где дата является последним днем ​​месяца

Ниже я установил переменную @data все мои статистические данные, ограничивающие ее Статистикой, где дата находится в прошлом году. Я также хотел бы ограничить данные только статистическими данными, имеющими дату последнего дня месяца.

EDIT - Обратите внимание, что дата начала является переменной и может быть изменена с помощью параметра

startdate = Date.1.year.ago 
@data = Statistic.where(date: startdate..Date.today).all 

Есть простой способ добавить еще один пункт .гда и использовать end_of_month для этого?

ответ

0

Написать этот scope в вашей Statistics модели:

scope :last_date_stats, ->(dates) { where(date: dates) } 

заселить dates массив в вашем StatisticsController, а затем использовать контекстный запрос, чтобы получить конкретные данные:

dates = (0..11).to_a.map { |n| n.months.ago.end_of_month }  
@last_date_statistics = Statistics.last_date_stats(dates) 
+2

Или: 'даты = (0 ..11) .to_a.map {| n | n.months.ago.end_of_month} ' – evanbikes

+0

Это выглядит правильно, но я не получаю никаких возвращенных записей. Я думаю, что дата в базе данных «дата», но в формате (2014-12-25). – Ryan

+0

Это сработало, хотя для моей реализации мне нужна была дата в формате 2014-12-25. Чтобы получить это, я использовал код evanbikes и был изменен, чтобы ... Date.parse (n.months.ago.end_of_month.to_s)} – Ryan

Смежные вопросы