Sha256: db2f8fd511f5a5b8802af62a0d7c921c49bc1167f9a9485c7488c66445132a00

Contents?: true

Size: 689 Bytes

Versions: 5

Compression:

Stored size: 689 Bytes

Contents

class StripeModelCallbacks::SyncFromStripe < StripeModelCallbacks::BaseService
  attr_reader :stripe_object

  def initialize(stripe_object:)
    @stripe_object = stripe_object
  end

  def perform
    model = model_class.find_by(stripe_id: stripe_object.id)

    if model
      model.stripe_object = stripe_object
      model.assign_from_stripe(stripe_object)
      model.save! if model.changed?
    else
      model = model_class.create_from_stripe!(stripe_object)
    end

    succeed!(model: model)
  end

  def model_class_name
    @model_class_name ||= stripe_object.class.name.gsub("::", "")
  end

  def model_class
    @model_class ||= model_class_name.safe_constantize
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stripe_model_callbacks-0.1.7 app/services/stripe_model_callbacks/sync_from_stripe.rb
stripe_model_callbacks-0.1.6 app/services/stripe_model_callbacks/sync_from_stripe.rb
stripe_model_callbacks-0.1.5 app/services/stripe_model_callbacks/sync_from_stripe.rb
stripe_model_callbacks-0.1.4 app/services/stripe_model_callbacks/sync_from_stripe.rb
stripe_model_callbacks-0.1.3 app/services/stripe_model_callbacks/sync_from_stripe.rb