Class: StripeModelCallbacks::AttributesAssignerService

Inherits:
ServicePattern::Service
  • Object
show all
Defined in:
app/services/stripe_model_callbacks/attributes_assigner_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes:, model:, stripe_model:) ⇒ AttributesAssignerService

Returns a new instance of AttributesAssignerService.



4
5
6
7
8
# File 'app/services/stripe_model_callbacks/attributes_assigner_service.rb', line 4

def initialize(attributes:, model:, stripe_model:)
  @attributes = attributes
  @model = model
  @stripe_model = stripe_model
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



2
3
4
# File 'app/services/stripe_model_callbacks/attributes_assigner_service.rb', line 2

def attributes
  @attributes
end

#modelObject (readonly)

Returns the value of attribute model.



2
3
4
# File 'app/services/stripe_model_callbacks/attributes_assigner_service.rb', line 2

def model
  @model
end

#stripe_modelObject (readonly)

Returns the value of attribute stripe_model.



2
3
4
# File 'app/services/stripe_model_callbacks/attributes_assigner_service.rb', line 2

def stripe_model
  @stripe_model
end

Instance Method Details

#performObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/services/stripe_model_callbacks/attributes_assigner_service.rb', line 10

def perform
  attributes.each do |attribute|
    next unless stripe_model.respond_to?(attribute)

    value = stripe_model.__send__(attribute)

    if attribute == "metadata"
      value = JSON.generate(value)
    elsif attribute == "created" && value
      value = Time.zone.at(value)
    end

    model.__send__(setter_method(attribute), value)
  end

  succeed!
end

#setter_method(attribute) ⇒ Object



28
29
30
31
32
33
34
# File 'app/services/stripe_model_callbacks/attributes_assigner_service.rb', line 28

def setter_method(attribute)
  if attribute == "id"
    "stripe_id="
  else
    "#{attribute}="
  end
end