0
我有一个Rails查询,我选择所有名称字段为空或零的试用id。有没有办法重写这个,所以它更干净?如何重写此rails 4查询以减少代码
Trial.where(names: "").pluck(:id) + Trial.where(names: nil).pluck(:id)
我有一个Rails查询,我选择所有名称字段为空或零的试用id。有没有办法重写这个,所以它更干净?如何重写此rails 4查询以减少代码
Trial.where(names: "").pluck(:id) + Trial.where(names: nil).pluck(:id)
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
我知道怎么写的捷径是:
Trial.where(name: [nil, '']).ids
这将找到所有Trial
记录ID,其中name
为NULL或空白。 Tt生成以下SQL:
SELECT `trials`.`id` FROM `trials` WHERE ((`trials`.`name` = '' OR `trials`.`name` IS NULL))