Sha256: 303d79de1790abbe8c1632ad1aec9bf31e2054167a4ef83353b28b1ba2aebbda

Contents?: true

Size: 1010 Bytes

Versions: 3

Compression:

Stored size: 1010 Bytes

Contents

class StripeSubscriptionItem < StripeModelCallbacks::ApplicationRecord
  belongs_to :stripe_plan, optional: true, primary_key: "stripe_id"
  belongs_to :stripe_subscription, optional: true, primary_key: "stripe_id"

  has_many :stripe_invoice_items, primary_key: "stripe_id"

  def self.stripe_class
    Stripe::SubscriptionItem
  end

  def assign_from_stripe(object)
    self.stripe_subscription_id = object.subscription if object.respond_to?(:subscription)
    self.stripe_plan_id = object.plan.id if object.plan.respond_to?(:id)

    StripeModelCallbacks::AttributesAssignerService.execute!(
      model: self, stripe_model: object,
      attributes: %w[id created metadata quantity]
    )
  end

  def update_quantity_on_stripe!(new_quantity)
    sub_object = stripe_subscription.to_stripe

    new_items = [{
      id: id,
      plan: stripe_plan_id,
      quantity: new_quantity
    }]

    sub_object.items = new_items
    sub_object.save

    stripe_subscription.reload_from_stripe!
    nil
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stripe_model_callbacks-0.1.2 lib/stripe_model_callbacks/models/stripe_subscription_item.rb
stripe_model_callbacks-0.1.1 lib/stripe_model_callbacks/models/stripe_subscription_item.rb
stripe_model_callbacks-0.1.0 lib/stripe_model_callbacks/models/stripe_subscription_item.rb