2014-10-17 70 views
0

我有一个Rails查询,我选择所有名称字段为空或零的试用id。有没有办法重写这个,所以它更干净?如何重写此rails 4查询以减少代码

Trial.where(names: "").pluck(:id) + Trial.where(names: nil).pluck(:id) 

回答

0
Trial.where("names = '' or names is null").pluck :id 

编辑

有一个更清洁的选择。创建这样一个范围:

审判模式:

class Trial < ActiveRecord::Base 
    scope :ids_with_blank_names, where("names = '' or names is null").pluck :id 
end 

然后在你控制器,你可以使用简单的Trial.ids_with_blank_names

1

我知道怎么写的捷径是:

Trial.where(name: [nil, '']).ids 

这将找到所有Trial记录ID,其中name为NULL或空白。 Tt生成以下SQL:

SELECT `trials`.`id` FROM `trials` WHERE ((`trials`.`name` = '' OR `trials`.`name` IS NULL))