|
- class Product < ApplicationRecord
- has_many :line_items
- has_many :orders, through: :line_items
-
- before_destroy :ensure_not_referenced_by_any_line_item
-
- validates :title, :description, :image_url, :price, presence: true
- validates :price, numericality: {greater_than_or_equal_to: 0.01}
- validates :title, uniqueness: true, length: { minimum: 5, maximum: 60 }
- validates :image_url, allow_blank: true, format: {
- with: %r{\.(gif|jpg|png)\Z}i,
- message: 'must be URL for GIF, JPG or PNG image.'
- }
-
- private
- def ensure_not_referenced_by_any_line_item
- unless line_items.empty?
- errors.add(:base, 'Line Items present')
- throw :abort
- end
- end
- end
|