ruby - получение записей, отфильтрованных по дате - PullRequest
2 голосов
/ 26 декабря 2010

У меня есть модуль «Работа» (и соответствующая таблица в БД), у этого модуля есть поле с именем schedule_run (datetime) и поле с именем user_id:

  1. как я могу получить все задания, принадлежащие пользователю и запланированные на сегодня?
  2. как я могу получить все задания, принадлежащие пользователю и запланированные на последнюю неделю?

Ответы [ 3 ]

1 голос
/ 27 декабря 2010

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

user = User.find(1)  # Will get the user with ID 1
jobs = Job.where("user_id = :id AND scheduled_run >= :start AND scheduled_run < :end",
                 :id => user.id,
                 :start => Date.today,
                 :end   => 1.day.from_now.to_date)

Чтобы получить все задания за последнюю неделю, мы выполним аналогичную команду, но мы переключим :start и :end на начало и конец недели:

user = User.find(1)  # Will get the user with ID 1
jobs = Job.where("user_id = :id AND scheduled_run >= :start AND scheduled_run < :end",
                 :id => user.id,
                 :start => 1.week.ago.to_date,
                 :end   => Date.today)

В обеих приведенных выше командах to_date заставит ActiveRecord рассматривать полученный DateTime как начало дня.

1 голос
/ 27 декабря 2010

Что-то вроде:

Job.where(:user_id => some_user_id, :scheduled_run => Date.today).all

Чтобы найти их за последнюю неделю, вам нужно указать диапазон дат. Я позволю тебе понять эту часть. Вам может понадобиться «Условие диапазона» или «Условие подмножества», упомянутые в руководстве ActiveRecord.

Rails Руководство по ActiveRecord хорошо для чтения. Также см. Раздел «Условия» в ActiveRecord документ.

0 голосов
/ 27 декабря 2010

Это обычный ruby ​​или вы используете рельсы или другие ORM / framework? Я так и предположу, так как вопросительный знак помечает activerecord

Это можно сделать так:

Job.where("user_id = ? AND datetime = ?", user_id, datetime).all

больше в документации по Rails здесь http://api.rubyonrails.org/classes/ActiveRecord/Base.html

Вы также можете использовать диапазоны дат, просто копайте немного вокруг документов;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...