我正在通过使用 Rails 4e 进行敏捷 Web 开发一书来学习 Rails。到目前为止,它使用以下作为我们的产品模型(改编自脚手架):
class Product < ActiveRecord::Base
attr_accessible :description, :image_url, :price, :title
validates :description, :title, :image_url, presence: true
validates :price, numericality: {greater_than_or_equal_to: 0.01}
validates :title, uniqueness: true
validates :image_url, allow_blank: true, format: {
with: %r{\.(gif|jpg|png)$}i,
message: 'Must be a valid URL for a gif, png, or jpg..'
}
end
我想知道为什么它首先测试 :image_url 的存在,然后在第三次验证中确保图像 url 有效,它允许空白响应与第一次验证相矛盾。我不明白为什么这应该按原样工作。
作为一个附加问题,如果 image_url 为空,我如何在我的代码中测试它是否为空?(例如在产品视图中显示默认图像。)