Rails 3: Как я могу найти строки в таблице, которые были созданы сегодня? - PullRequest
4 голосов
/ 06 апреля 2011

Желательно, чтобы я использовал выражение вроде ...

current_user.workouts.find_by_created_at(Time.now.day)

, но это не работает, я думаю, потому что времена не совпадают,Я буду продолжать читать документы, но я решил опубликовать этот вопрос, чтобы обратиться за помощью, пока я читаю.

Спасибо!

ОБНОВЛЕНИЕ Используя новую поддержку Rails 3 для ARel и именованных областей, я изменил запрос на ...

Модель

   class Workout < ActiveRecord::Base
      scope :from_today, where(" created_at between ? AND ?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day)
    .
    .
    .
    end

Контроллер

def create
  workouts = current_user.workouts.from_today
.
.
.
end

Ответы [ 3 ]

5 голосов
/ 06 апреля 2011

Если вы используете MySQL, вы можете сделать следующее:

Рельсы 3:

current_user.workouts.where('DATE(created_at) = ?', Date.today)

Рельсы 2:

current_user.workouts.find(:all, :conditions => ['DATE(created_at) = ?', Date.today])
3 голосов
/ 06 апреля 2011

Я написал гем для этого вида операций, он называется by_star.С его помощью вы можете сделать это, чтобы получить все записи, созданные сегодня:

current_user.workouts.today

Также есть множество других полезных методов.Попробуй.

3 голосов
/ 06 апреля 2011
current_user.workouts.find(:all, :conditions => [" YEAR(created_at) = ? AND MONTH(created_at) = ? AND DAY(created_at) = ?", Time.zone.now.year, Time.zone.now.month, Time.zone.now.day])

или

current_user.workouts.find(:all, :conditions => [" created_at between ? AND ?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day])

не уверен, что более оптимизировано

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