Rails范围lambda,排除具有空值的字段

时间:2012-08-21 17:29:33

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

我有一个范围,用于查找call_status打开且unit_id为nil的呼叫记录。

scope :unassigned_calls, where(:call_status => "open", :unit_id => nil).order("id ASC")

我最近设置了一个has_many关系,其中在调用模型上不再使用unit_id,而是在call_unit模型连接表上使用一个名为unit_ids的字段。

如何将范围或lambda表示为包含连接表中unit_ids的位置?

1 个答案:

答案 0 :(得分:0)

我不相信AREL允许你调用外连接。尝试写出SQL

scope :unassigned_calls, joins("left outer join call_unit on call.id=call_unit.call_id").where("call_unit.unit_id is null").order("id ASC")

我在这里假设连接表有一个call_id列,这可能不准确,但希望它能为您提供必要的框架