Sha256: 08f67a671262295b8ea534de90c558bbd51329cf4a069abb480dffb56e412dbd
Contents?: true
Size: 1.59 KB
Versions: 3
Compression:
Stored size: 1.59 KB
Contents
class TbCommerce::Order < ActiveRecord::Base self.table_name = 'tb_commerce_orders' scope :search, ->(term){ where('name LIKE ?', "%#{term}%") } belongs_to :cart, :inverse_of => :order, :foreign_key => :tb_commerce_cart_id has_many :transactions, :inverse_of => :order, :foreign_key => :tb_commerce_order_id has_one :captured_transaction, ->{ captured }, :class_name => 'TbCommerce::Transaction', :foreign_key => :tb_commerce_order_id validates_presence_of :cart, :name, :address, :city, :state, :postal, :country validates_uniqueness_of :cart validates :email, :format => {:with => Authlogic::Regex.email, :message => 'should look like an email address.'} before_create :set_invoice_number define_callbacks :capture set_callback :capture, :after, :after_capture def description return cart.description end module Status OPEN = 'open' PLACED = 'placed' SHIPPED = 'shipped' end def full_name return name end def full_address return "#{address}, #{city} #{state}, #{postal}, #{country}" end private def set_invoice_number new_invoice_number = TbCommerce::Order.maximum(:invoice_number) || 1000000 loop do new_invoice_number += 1 break unless TbCommerce::Order.exists?(:invoice_number => new_invoice_number) end self.invoice_number = new_invoice_number end def after_capture update_attribute(:status, Status::PLACED) cart.update_attribute(:is_completed, true) TbCommerce::OrderMailer.order_placed(self).deliver_later TbCommerce::OrderMailer.order_confirmation(self).deliver_later return true end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
tb_commerce-0.0.4 | app/models/tb_commerce/order.rb |
tb_commerce-0.0.3 | app/models/tb_commerce/order.rb |
tb_commerce-0.0.2 | app/models/tb_commerce/order.rb |