Sha256: 2fbef83e48c419d56b35a0f4b19bc9b2274c37d000a16bf4e280ac0411ceaffc

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

class Serve < ApplicationRecord
  attr_accessor :price
  serialize :extra, Array

  belongs_to :deal, polymorphic: true, optional: true
  has_many :charges, class_name: 'ServeCharge', dependent: :delete_all
  has_many :serve_goods, dependent: :delete_all

  scope :verified, -> { where(verified: true) }
  scope :special, -> { where(verified: true, overall: false) }
  scope :overall, -> { where(verified: true, overall: true) }
  scope :default, -> { where(verified: true, default: true) }
  scope :for_sale, -> { where(verified: true, default: false) }

  enum scope: {
    'total': 'total',
    'single': 'single'
  }

  def compute_price(amount, extra_hash = {})
    extra_hash.stringify_keys!

    if self.contain_max
      range = { 'min-lte': amount.to_d, 'max-gte': amount.to_d }
    else
      range = { 'min-lte': amount.to_d, 'max-gt': amount.to_d }
    end

    query = range.merge(extra_hash.slice(*extra))
    charge = self.charges.default_where(query).first
    if charge
      charge.subtotal = charge.final_price(amount)
      charge.default_subtotal = charge.subtotal
    else
      charge = self.charges.build
      charge.subtotal = 0
    end
    charge
  end

end unless RailsTrade.config.disabled_models.include?('Serve')

# :start_at, :datetime
# :finish_at, :datetime

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_trade-0.0.1 app/models/rails_trade/serve.rb