Sha256: 9095d55a60ab1ebf8914b9299c9ff5d73e02e923a1503359cdbe734784e2f8c2

Contents?: true

Size: 629 Bytes

Versions: 2

Compression:

Stored size: 629 Bytes

Contents

module Kosher
  class Offer < Structure
    include ActiveModel::Validations
    include Comparable

    key :id
    one :seller
    one :shipping
    one :unit
    key :venue_id, Integer

    validates_presence_of :seller, :shipping, :unit, :venue

    def <=>(other)
      if kosher? != other.kosher?
        kosher? ? -1 : 1
      else
        total <=> other.total
      end
    end

    def kosher?
      raise Invalid.new(self) unless valid?
      seller.kosher? && shipping.kosher? && unit.kosher?
    end

    def price
      unit.price + shipping.cost
    end

    def venue
      Venue.find(venue_id)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kosher-0.10.0 lib/kosher/offer.rb
kosher-0.9.1 lib/kosher/offer.rb