我使用了范围where(address: [nil, ''], city: [nil, ''])
,我收到了请求
WHERE ((`address`.`address` = '' OR `address`.`address` IS
NULL) AND (`address`.`city` = '' OR `address`.`city` IS
NULL))
我需要将AND
替换为OR
。如何使用ActiveRecord构建查询?
答案 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)))