2014-10-17 84 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))