Sha256: 400a6d49677dfda0633301bcd58cbee07a543320a5edf5c6ac5e68a66a2fe189

Contents?: true

Size: 911 Bytes

Versions: 3

Compression:

Stored size: 911 Bytes

Contents

require "active_support/concern"

module PuntoPagosRails
  module Payable
    extend ActiveSupport::Concern
    attr_reader :payment_method

    PAYMENT_STATES = %w{pending completed rejected}

    included do
      extend Enumerize

      has_many :transactions, as: :payable, class_name: "PuntoPagosRails::Transaction"
      enumerize :payment_state, in: PAYMENT_STATES,
                                default: :pending,
                                predicates: true,
                                scope: true,
                                prefix: false

      def paid?
        completed?
      end

      def payment_method=(value)
        value = value.to_i
        @payment_method = value.zero? ? nil : value
      end
    end

    module ClassMethods
      def by_token(token)
        transaction = Transaction.find_by(token: token)
        transaction.try(:payable)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
punto_pagos_rails-1.6.0 lib/punto_pagos_rails/payable.rb
punto_pagos_rails-1.5.0 lib/punto_pagos_rails/payable.rb
punto_pagos_rails-1.4.0 lib/punto_pagos_rails/payable.rb