Sha256: e6386bfd1ddf8681dd9d7ca708cc6356645b02708d00ea7f5e003919892aba88

Contents?: true

Size: 1.07 KB

Versions: 96

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module Spree
  class WalletPaymentSource < Spree::Base
    belongs_to :user, class_name: Spree::UserClassHandle.new, foreign_key: 'user_id', inverse_of: :wallet_payment_sources, optional: true
    belongs_to :payment_source, polymorphic: true, inverse_of: :wallet_payment_sources, optional: true

    validates_presence_of :user
    validates_presence_of :payment_source
    validates :user_id, uniqueness: {
      scope: [:payment_source_type, :payment_source_id],
      message: :payment_source_already_exists
    }

    validate :check_for_payment_source_class
    validate :validate_payment_source_ownership

    private

    def check_for_payment_source_class
      if !payment_source.is_a?(Spree::PaymentSource)
        errors.add(:payment_source, :has_to_be_payment_source_class)
      end
    end

    def validate_payment_source_ownership
      return unless payment_source.present?

      if payment_source.respond_to?(:user_id) &&
         payment_source.user_id != user_id
        errors.add(:payment_source, :not_owned_by_user)
      end
    end
  end
end

Version data entries

96 entries across 96 versions & 1 rubygems

Version Path
solidus_core-4.5.1 app/models/spree/wallet_payment_source.rb
solidus_core-4.5.0 app/models/spree/wallet_payment_source.rb
solidus_core-4.3.6 app/models/spree/wallet_payment_source.rb
solidus_core-4.2.5 app/models/spree/wallet_payment_source.rb
solidus_core-4.1.6 app/models/spree/wallet_payment_source.rb
solidus_core-4.4.2 app/models/spree/wallet_payment_source.rb
solidus_core-4.4.1 app/models/spree/wallet_payment_source.rb
solidus_core-4.4.0 app/models/spree/wallet_payment_source.rb
solidus_core-4.3.4 app/models/spree/wallet_payment_source.rb
solidus_core-4.2.4 app/models/spree/wallet_payment_source.rb
solidus_core-4.1.5 app/models/spree/wallet_payment_source.rb
solidus_core-4.3.3 app/models/spree/wallet_payment_source.rb
solidus_core-4.3.2 app/models/spree/wallet_payment_source.rb
solidus_core-4.1.4 app/models/spree/wallet_payment_source.rb
solidus_core-4.3.1 app/models/spree/wallet_payment_source.rb
solidus_core-4.3.0 app/models/spree/wallet_payment_source.rb
solidus_core-4.2.3 app/models/spree/wallet_payment_source.rb
solidus_core-4.1.3 app/models/spree/wallet_payment_source.rb
solidus_core-4.0.4 app/models/spree/wallet_payment_source.rb
solidus_core-3.4.6 app/models/spree/wallet_payment_source.rb