Sha256: bf48649bc3df60af72410c6c60d9cf53e78f0b04ee1d1709cc0eb4fcf674521e

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

module Pay
  class Charge < ApplicationRecord
    self.table_name = Pay.chargeable_table

    # Only serialize for non-json columns
    serialize :data unless json_column?("data")

    # Associations
    belongs_to :owner, polymorphic: true

    # Scopes
    scope :sorted, -> { order(created_at: :desc) }
    default_scope -> { sorted }

    # Validations
    validates :amount, presence: true
    validates :processor, presence: true
    validates :processor_id, presence: true
    validates :card_type, presence: true

    def processor_charge
      send("#{processor}_charge")
    end

    def refund!(refund_amount = nil)
      refund_amount ||= amount
      send("#{processor}_refund!", refund_amount)
    end

    def charged_to
      "#{card_type} (**** **** **** #{card_last4})"
    end

    def stripe?
      processor == "stripe"
    end

    def braintree?
      processor == "braintree"
    end

    def paypal?
      braintree? && card_type == "PayPal"
    end

    def paddle?
      processor == "paddle"
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
pay-2.5.0 app/models/pay/charge.rb
pay-2.4.4 app/models/pay/charge.rb
pay-2.4.3 app/models/pay/charge.rb
pay-2.4.2 app/models/pay/charge.rb
pay-2.4.0 app/models/pay/charge.rb
pay-2.3.1 app/models/pay/charge.rb
pay-2.3.0 app/models/pay/charge.rb