如何在特定时间之后用时间查找所有数据库行

时间:2011-06-10 00:30:43

标签: mysql ruby-on-rails

我的users表中有一个“last_action”列,每次用户执行操作时都会更新unix时间戳。我想选择我的用户表中的所有用户在特定时间之后在网站上进行了操作(可能是15分钟,这里的目标是让贫民窟用户在线列表)。

我想做以下事情......

time = Time.now.to_i - 900 # save the timestamp 15 minutes ago in a variable 
User.where(:all, :where => :last_action > time)

最好的方法是什么?有没有办法不使用任何原始SQL?

2 个答案:

答案 0 :(得分:1)

也许这会有用吗?

User.where("users.last_action > ?", 15.minutes.ago)

答案 1 :(得分:0)

试试这个:

time = Time.now.to_i - 900
User.where("last_action > #{time}")

可能有一个更好/更安全的语法将变量参数放入where子句中,但由于您使用的是整数(时间戳),因此这应该是安全的。