Rails 4e を使用した Agile Web development という本で 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 が有効であることを確認するための 3 次検証で、最初の検証と矛盾する空白の応答が許可されます。なぜこれがそのまま機能することになっているのかわかりません。
追加の質問として、image_url が空の場合、コードで空かどうかをテストするにはどうすればよいですか? (たとえば、製品ビューでデフォルトの画像を表示します。)