【发布时间】:2016-04-26 22:34:08
【问题描述】:
Rails 中有没有一种方法可以通过比较来自同一模型的两个属性来查询记录列表?
我有一个用户模型,我想查询所有用户,其中 updated_at 时间在 Users 表上 created_at 时间的 6 小时内。
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord
Rails 中有没有一种方法可以通过比较来自同一模型的两个属性来查询记录列表?
我有一个用户模型,我想查询所有用户,其中 updated_at 时间在 Users 表上 created_at 时间的 6 小时内。
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord
如果你给where 一个字符串,它就会变成SQL。所以你可以这样说:
User.where("updated_at - created_at <= interval '6 hours'")
那是在 Postgres 中。 MySQL 应该是相似的,但有一点不同。
【讨论】:
interval '4 hours' 的比较是一样的,对吧?我会花一点时间学习 SQL,并在像 psql 这样的普通数据库提示符下测试这些查询,然后在它们执行您想要的操作时将它们转换为 ActiveRecord。例如SELECT * FROM users WHERE updated_at - created_at <= interval '4 hours'";.