[英]ActiveRecord - Compare two values in same row
我有一张通话数据表,我想查询所有未应答的通话,这意味着通话开始时间等于通话结束时间。 我目前使用下面的普通SQL可以正常工作:
select * from calls where calls.start = calls.end
我想知道是否有使用ActiveRecord查询接口的其他“轨道”方法。 理想情况下,我想在我的“ Call
模型中设置一个范围,以将所有未应答的呼叫返回给我。 就像是:
scope :unanswered, -> { where(start: :end) }
上面的方法不起作用,因为Rails将:end
视为字符串而不是数据库中的end
列。
我使用PostgreSQL作为数据库引擎。
SQL查询
select * from calls where calls.start = calls.end
可以使用如下所示的范围以rails
方式完成:
scope :unanswered, -> { where('start = end') }
我认为您可以执行以下操作:
scope :unanswered, -> (end) { where(start: end) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.