Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3:如何在表中找到今天创建的行?_Ruby On Rails_Activerecord - Fatal编程技术网

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