Rails 3:如何在今天创建的表中查找行?

Bea*_*red 4 activerecord ruby-on-rails

我最好使用像......这样的陈述.

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
Run Code Online (Sandbox Code Playgroud)

调节器

def create
  workouts = current_user.workouts.from_today
.
.
.
end
Run Code Online (Sandbox Code Playgroud)

Pan*_*kos 5

如果您使用的是MySQL,则可以执行以下操作:

Rails 3:

current_user.workouts.where('DATE(created_at) = ?', Date.today)
Run Code Online (Sandbox Code Playgroud)

Rails 2:

current_user.workouts.find(:all, :conditions => ['DATE(created_at) = ?', Date.today])
Run Code Online (Sandbox Code Playgroud)