Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 数据映射器日期时间条件_Ruby_Datetime_Sinatra_Datamapper - Fatal编程技术网

Ruby 数据映射器日期时间条件

Ruby 数据映射器日期时间条件,ruby,datetime,sinatra,datamapper,Ruby,Datetime,Sinatra,Datamapper,我正在使用一个简单的Sinatra web应用程序和一个DataMapper MySql db。我用属性声明了一个DatamapperPost类 property :created_at, DateTime (初始化时间为Time.now),现在要获取过去7天内所有帖子的计数。我的疑问 lastweek_posts = Post.count(:created_at.gte => 1.week.ago) lastweek_posts = Post.count(:conditions =&g

我正在使用一个简单的Sinatra web应用程序和一个DataMapper MySql db。我用属性声明了一个Datamapper
Post

property :created_at, DateTime
(初始化时间为
Time.now
),现在要获取过去7天内所有帖子的计数。我的疑问

lastweek_posts = Post.count(:created_at.gte => 1.week.ago)
lastweek_posts = Post.count(:conditions => ["created_at >= ?", Time.now.utc - 1.week])
但是,所有返回的计数均为0(数据库包含多个条目,其中包含一个在今天创建的_)。正确的查询是什么

非常感谢

更新:

Post.all(:created_at.gte => 1.week.ago).length

返回正确的值,但这是一个不好的选择,因为它将从我的远程sql数据库获取所有帖子。

好的,我发现了错误,我只是错过了在我的Sinatra脚本中要求
dm aggregates
,如


我为这件事感到抱歉

好的,我发现了错误,我只是错过了在我的Sinatra脚本中要求
dm aggregates
,如中所述


我为这件事感到抱歉

这两个问题都是正确的,对我来说非常有效。谢谢你的反馈!这很奇怪,这可能是带有datetime/time数据类型转换的mysql适配器的内部问题吗?检查Post.all返回的内容,看看是否可以通过计算ruby端得到相同的结果。它也可能取决于适配器,尝试将列类型更改为Time(映射到TIMESTAMP,这是存储时间的推荐类型)。谢谢,请参阅上面的更新,fetch与ruby计数结合使用会返回正确的值。所以这可能是DataMapper的一个bug?这两个查询都是正确的,对我来说非常有效。谢谢你的反馈!这很奇怪,这可能是带有datetime/time数据类型转换的mysql适配器的内部问题吗?检查Post.all返回的内容,看看是否可以通过计算ruby端得到相同的结果。它也可能取决于适配器,尝试将列类型更改为Time(映射到TIMESTAMP,这是存储时间的推荐类型)。谢谢,请参阅上面的更新,fetch与ruby计数结合使用会返回正确的值。这可能是DataMapper的一个bug?