上我用了下一行網頁工作:導軌 - 簡化WHERE條件IS NOT NULL
Model.select(:column).where("column IS NOT NULL")
我在想,如果有辦法做到這一點更Rails的十歲上下的方式,如使用例如哈希
Model.select(:column).where(column: !nil)
上我用了下一行網頁工作:導軌 - 簡化WHERE條件IS NOT NULL
Model.select(:column).where("column IS NOT NULL")
我在想,如果有辦法做到這一點更Rails的十歲上下的方式,如使用例如哈希
Model.select(:column).where(column: !nil)
Squeel gem將允許你使用!= nil類型的語法,但本地rails不會。
實施例:Model.where{column != nil}
我寧願使用範圍,因爲其更可讀的以及其更易於管理的後面(如與其他範圍合併)
class Model < ActiveRecord::Base
scope :not_null, lambda { |column|
{:select => column,
:conditions => "#{column} NOT NULL"
}
}
end
然後使用
Model.not_null("column_name")
你是否建議爲每個模型的每一列創建一個單獨的作用域?請展示如何以更乾的方式完成這項工作...... – Mischa
@Mischa,我更新了我的答案以獲取列名作爲參數:) – sameera207
這樣更好,但您仍然必須將其添加到您想要的每個模型中使用它。 – Mischa
在Rails 4中,您可以這樣做:
Model.select(:column).where.not(column: nil)
就像是一個側面問題,您可能會考慮是否可以避免列中出現空值(並且可以通過驗證來防止)。他們是一種痛苦。 –