class Product < ActiveRecord::Base
+ has_many :line_items
+ has_many :orders, :through => :line_items
+
validates_presence_of :title, :description, :image_url
validates_numericality_of :price
validate :price_must_be_at_least_a_penny
validates_uniqueness_of :title
validates_format_of :image_url,
:with => %r{\.(gif|jpg|png)$}i,
- :message => 'must be a URL for a GIF, JPG, or PNG image.'
+ :message => "must be a URL for GIF, JPG, or PNG image."
+
+ def self.find_products_for_sale
+ find(:all,
+ :conditions => "date_available <= now() and (date_available_until is null or date_available_until >= now())",
+ :order => :title)
+ end
protected
def price_must_be_at_least_a_penny