Ruby on rails Rails 3:如何在表中找到今天创建的行?
我最好用一句话,比如Ruby on rails Rails 3:如何在表中找到今天创建的行?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我最好用一句话,比如 current\u user.workouts.find\u by\u created\u at(Time.now.day) 但我猜这是行不通的,因为时间不匹配。我将继续阅读这些文档,但我想我会在阅读时发布这个问题以寻求帮助 谢谢 更新 使用新的Rails 3对ARel和命名作用域的支持,我将查询重构为 模型 或 不确定哪一个更优化如果使用MySQL,可以执行以下操作: 轨道3: current_user.workouts.where('DATE(created_at) =
current\u user.workouts.find\u by\u created\u at(Time.now.day)
但我猜这是行不通的,因为时间不匹配。我将继续阅读这些文档,但我想我会在阅读时发布这个问题以寻求帮助
谢谢
更新
使用新的Rails 3对ARel和命名作用域的支持,我将查询重构为
模型
或
不确定哪一个更优化如果使用MySQL,可以执行以下操作: 轨道3:
current_user.workouts.where('DATE(created_at) = ?', Date.today)
轨道2:
current_user.workouts.find(:all, :conditions => ['DATE(created_at) = ?', Date.today])
我为这种手术写了一个宝石,叫做。使用它,您可以执行以下操作以获得今天创建的所有记录:
current_user.workouts.today
还有很多其他有用的方法。试一试。注意观察范围。在rails 2作用域中存在问题,您可能需要执行以下操作:where(“在#{Time.zone.now.begin{u of_day}和#{Time.zone.now.end{u of_day}之间创建_”),否则服务器启动时会缓存日期。“?”语法为cachedTime.zone.now.Start\u of_day是首选。Time.zone.now.day将是UTC,它将返回正确的日期,但在MYSQL上,您可能会将所有日期存储为UTC。因此给你错误的结果。
current_user.workouts.find(:all, :conditions => [" created_at between ? AND ?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day])
current_user.workouts.where('DATE(created_at) = ?', Date.today)
current_user.workouts.find(:all, :conditions => ['DATE(created_at) = ?', Date.today])
current_user.workouts.today