Sha256: 3275a6597b26fd64d107a60949f955af3064b14c37a5d1a2f4fb7bdcc6b25c55
Contents?: true
Size: 791 Bytes
Versions: 5
Compression:
Stored size: 791 Bytes
Contents
class StripeModelCallbacks::AttributesAssignerService < ServicePattern::Service attr_reader :attributes, :model, :stripe_model def initialize(attributes:, model:, stripe_model:) @attributes = attributes @model = model @stripe_model = stripe_model end 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 def setter_method(attribute) if attribute == "id" "stripe_id=" else "#{attribute}=" end end end
Version data entries
5 entries across 5 versions & 1 rubygems