如何在ActiveRecord Rails 4.1.1中使用OR?

时间:2017-05-18 09:24:28

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord rails-activerecord

我使用了范围where(address: [nil, ''], city: [nil, '']),我收到了请求

WHERE ((`address`.`address` = '' OR `address`.`address` IS
NULL) AND (`address`.`city` = '' OR `address`.`city` IS
NULL))

我需要将AND替换为OR。如何使用ActiveRecord构建查询?

2 个答案:

答案 0 :(得分:0)

你可以试试这个

where("address.address in (?) or address.city in (?)", [nil, ''])

在申请中

scope :empty_address, -> { where("address.address in (?) or address.city in (?)", [nil, '']) }
Address.empty_address

答案 1 :(得分:0)

您可以使用Arel gem并形成如下查询:

ids = [nil,''] Address.where(Address.arel_table[:address].in(ids).or(Address.arel_table[:city].in(ids)))

Arel-helpers你可以缩短它: Address.where(Address[:address].in(ids).or(Address[:city].in(ids)))