Class: BraintreeRails::CreditCardValidator

Inherits:
Validator
  • Object
show all
Defined in:
lib/braintree_rails/credit_card_validator.rb

Constant Summary collapse

Validations =
[
  [:cardholder_name, :length => {:maximum => 255}],
  [:customer_id, :presence => true, :length => {:maximum => 36}, :on => :create],
  [:number, :presence => true, :allow_blank => false, :if => :new_record?],
  [:number, :numericality => {:only_integer => true}, :length => {:minimum => 12, :maximum => 19}, 'braintree_rails/luhn_10' => true, :if => Proc.new { Configuration.mode == Configuration::Mode::S2S }],
  [:cvv, :presence => true, :allow_blank => false, :if => :new_record?],
  [:cvv, :numericality => {:only_integer => true}, :length => {:minimum => 3, :maximum => 4}, :if => Proc.new { Configuration.mode == Configuration::Mode::S2S }],
  [:expiration_month, :presence => true, :if => Proc.new { |credit_card| credit_card.new_record? && credit_card.expiration_date.blank? }],
  [:expiration_year, :presence => true, :if => Proc.new { |credit_card| credit_card.new_record? && credit_card.expiration_date.blank? }],
  [:expiration_date, :presence => true, :if => Proc.new { |credit_card| credit_card.new_record? && credit_card.expiration_month.blank? }],
  [:expiration_month, :numericality => { :only_integer => true, :greater_than_or_equal_to => 1, :less_than_or_equal_to => 12 }, :if => Proc.new { Configuration.mode == Configuration::Mode::S2S }],
  [:expiration_year, :numericality => { :only_integer => true, :greater_than_or_equal_to => 1976, :less_than_or_equal_to => 2200 }, :if => Proc.new { Configuration.mode == Configuration::Mode::S2S }],
]

Instance Method Summary collapse

Methods inherited from Validator

collect_validations, default_validations, model_class, reset_validations, set_validations, setup, #setup

Instance Method Details

#has_valid_billing_address(credit_card) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/braintree_rails/credit_card_validator.rb', line 21

def has_valid_billing_address(credit_card)
  credit_card.instance_eval do
    errors.add(:billing_address, "is empty") and return if billing_address.blank?
    if billing_address.invalid?
      errors.add(:billing_address, "is invalid")
      billing_address.errors.full_messages.each do |message|
        errors.add(:base, message)
      end
    end
  end
end

#validate(credit_card) ⇒ Object



17
18
19
# File 'lib/braintree_rails/credit_card_validator.rb', line 17

def validate(credit_card)
  has_valid_billing_address(credit_card) if validate_billing_address?
end

#validate_billing_address?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/braintree_rails/credit_card_validator.rb', line 33

def validate_billing_address?
  Configuration.require_postal_code || Configuration.require_street_address
end