class StripeCard < StripeModelCallbacks::ApplicationRecord belongs_to :stripe_customer, optional: true, primary_key: "stripe_id" def self.stripe_class Stripe::Card end def assign_from_stripe(object) check_object_is_stripe_class(object) self.stripe_customer_id = object.customer if object.respond_to?(:customer) StripeModelCallbacks::AttributesAssignerService.execute!( model: self, stripe_model: object, attributes: %w[ id address_city address_country address_line1 address_line1_check address_line2 address_state address_zip address_zip_check brand country cvc_check dynamic_last4 exp_month exp_year fingerprint funding last4 name tokenization_method ] ) end def to_stripe @to_stripe ||= Stripe::Customer.retrieve_source(stripe_customer_id, stripe_id) end end