ActiveRecord - 比较同一行中的两个值

时间:2015-11-19 11:34:29

标签: sql ruby-on-rails postgresql activerecord

我有一个呼叫数据表,我想查询所有未应答的呼叫,这意味着呼叫开始时间等于呼叫结束时间。我目前使用以下普通SQL,它按预期工作:

/*padding: 0 15px;*/

我想知道是否有更多的“rails”方式来使用ActiveRecord查询接口。理想情况下,我想在我的select * from calls where calls.start = calls.end 模型中设置一个范围,该范围会返回所有未应答的呼叫。类似的东西:

Call

上述操作不起作用,因为Rails将scope :unanswered, -> { where(start: :end) } 视为字符串而不是DB中的:end列。

我正在使用PostgreSQL作为我的数据库引擎。

2 个答案:

答案 0 :(得分:1)

SQL查询

select * from calls where calls.start = calls.end

可以使用范围以rails方式完成,如下所示:

scope :unanswered, -> { where('start = end') }

答案 1 :(得分:0)

我认为你可以做到以下几点:

scope :unanswered, -> (end) { where(start: end) }