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))