我正在使用Rails5。我具有如下定义的产品模型
class Product < ActiveRecord::Base
validates :image_url, presence: true
def image_url
super || 'http://someplaceholderimage.com'
end
end
每个产品都有一个image_url属性。现在,当我运行以下查询时:
Product.all.where.not(image_url: nil)
我希望它返回所有产品,即使其中任何image_url在数据库中为零。但是没有使用模型中定义的默认值,而是仅获取image_url列在数据库中具有非nil值的那些产品。我该如何解决?
谢谢
这是一个实例方法。它可以在Product类的任何实例上使用。
通过模型对数据库进行的每个查询都是一个类方法。因此,它们将不会按您预期的那样工作。
您可以做的是向数据库中的该列添加默认值。因此,每当插入一条记录时,使用nil(NULL)image_url,它将采用您定义为默认值的值。