Rails activerecord查询比较同一记录的两个属性

时间:2012-07-07 18:43:08

标签: ruby-on-rails ruby-on-rails-3

我正在寻找一种方法来构建一个查询,比较同一记录的两个属性,而不先拉取记录并比较后查询。我的具体情况可能会有10k的记录,因此不能选择迭代每个记录。

示例:通过查询.where updated_at == created_at

查找此记录
#<User id: 1, name: "xxx", created_at: "2012-07-01 12:00:00", updated_at: "2012-07-01 12:00:00">

Rails 3 +,ActiveRecord,MySQL。

更新:正如评论员Matzi所指出的,以下在使用sqlite时有效,但不是 mysql

User.where("created_at == updated_at")

解决:简单的错误,ruby vs sql。

Sqlite可以使用:

User.where("created_at == updated_at")

但MySQL需要:

User.where("created_at = updated_at")

1 个答案:

答案 0 :(得分:7)

如果您想以通用方式执行此操作,则应使用ARel来远离特定的数据库实现。像

这样的东西
users = User.arel_table
User.where(users[:created_at].eq(users[:updated_at]))

会起作用