使用命名范围,可以创建一个带参数的范围,但如果参数是.blank?
,它什么也不做。如何使用类方法获得相同的结果?
给定这样的模型
class Product
belongs_to :category
def self.in_category(id)
where('"category".id = ?', id) unless id.blank?
end
end
Product.all.in_category("")
返回 nil,但我希望它与Product.all
.
我唯一的想法是设置.in_category
为做一些不必要if..else..end
的事情,但我不想用不必要的语句使生成的 SQL 混乱。else
where('"category".id = *')