module Saaz::StripeObject

Attributes

stripe_dirty[W]

Public Instance Methods

delegate_all_to_stripe(stripe_obj) click to toggle source
# File lib/saaz/stripe_object.rb, line 45
def delegate_all_to_stripe(stripe_obj)
  stripe_obj.keys.each do |attribute|
    delegate_getter(attribute)
    delegate_setter(attribute)
  end
end
delegate_getter(attribute) click to toggle source
# File lib/saaz/stripe_object.rb, line 28
def delegate_getter(attribute)
  return if self.respond_to?(attribute)
  delegate_to_stripe(attribute) do
    to_stripe.send(attribute)
  end
end
delegate_setter(attribute) click to toggle source
# File lib/saaz/stripe_object.rb, line 35
def delegate_setter(attribute)
  setter_name = (attribute.to_s + '=').to_sym
  return if self.respond_to?(setter_name)

  delegate_to_stripe(setter_name) do |v|
    self.stripe_dirty = true
    to_stripe.send(setter_name, v)
  end
end
delegate_to_stripe(name, &block) click to toggle source
# File lib/saaz/stripe_object.rb, line 22
def delegate_to_stripe(name, &block)
  (class << self; self; end).class_eval do
    define_method name, &block
  end
end
method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/saaz/stripe_object.rb, line 52
def method_missing(method_name, *args, &block)
  begin
    # Try the rails magic first
    super
  rescue NoMethodError => e
    # See if the wrapped stripe object defines this
    to_stripe
    if methods.include? method_name
      send(method_name, *args, &block)
    else
      fail e
    end
  end
end
stripe_dirty() click to toggle source
# File lib/saaz/stripe_object.rb, line 9
def stripe_dirty
  @stripe_dirty || false
end
update_stripe() click to toggle source
# File lib/saaz/stripe_object.rb, line 13
def update_stripe
  begin
    to_stripe.save
    self.stripe_dirty = false
  rescue Stripe::StripeError => e
    self.errors[:base] << e.message
  end
end