2013-07-18 74 views
0

我有一个模型A,它使用Rails时间戳和一个名为ttl的属性,它表示每次更新记录之间的时间(分钟)。根据时间选择记录

我想选择应该更新ERGO所有记录:

WHERE (Time.now - updated_at).to_minutes > ttl) 

我一直在试图使用Feed.where("(?-updated_at) > ttl", Time.now).to_a的变化,但我一直没有成功。有人可以帮我查询吗?

回答

2

原因是,数据库不能像计算算法那样进行时间计算。
你必须使用数据库的时间函数,不幸的是没有标准。

在MySQL中,你可以使用

Feed.where("TIMESTAMPADD(MINUTE,ttl,updated_at)<?",Time.now) 
+0

升技恼人的有在开发中使用MySQL,但它就像一个魅力 – Artmann

+0

以及使用'SQLite'您可以用'那里(“的strftime(”%Y-% m-%d%H:%i:%s',updated_at,'+'|| ttl ||'minutes')<?“,Time.now)'你可以使用Rails.env.development在两个版本之间切换?正如我所说:不幸的是时间函数是数据库依赖。 –