Ich versuche, meine App über Strike via Webhook erfolgreiche Gebühren aufzuzeichnen. Dies basiert auf Chris Oliver GoRails Diskussion auf Stripe Webhooks. Ich verwende den Koudoku-Edelstein, um die Stripe-Funktionalität zu erstellen. Beim Laden des JSON-Objekts in die Charges-Tabellen tritt ein Fehler auf.Stripe NoMethodError: undefinierte Methode `Gebühren 'für Nil: NilClass in der Rails-Konsole
Hier ist der Fehler, wenn ich versuche, aufzeichnen ein Ereignis eintritt:
RecordCharges.new.call(event)
Subscription Load (0.3ms) SELECT "subscriptions".* FROM "subscriptions" WHERE "subscriptions"."stripe_id" = ? LIMIT 1 [["stripe_id", "cus_withheldforexample"]]
NoMethodError: undefined method `charges' for nil:NilClass
In meiner App haben Nutzer ein Abonnement. Abonnements haben viele Gebühren. Gebühren gehören Abonnements.
Hier ist das Schema:
create_table "charges", force: :cascade do |t|
t.string "stripe_id"
t.string "amount"
t.string "card_last4"
t.string "card_type"
t.string "card_exp_month"
t.string "card_exp_year"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "subscription_id"
end
create_table "subscriptions", force: :cascade do |t|
t.string "stripe_id"
t.integer "plan_id"
t.string "last_four"
t.integer "coupon_id"
t.string "card_type"
t.float "current_price"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Meine Stripe.rb Datei
class RecordCharges
def call(event)
charge = event.data.object
subscription = Subscription.find_by(stripe_id: charge.customer)
subscription.charges.create(
stripe_id: charge.id,
amount: charge.amount,
card_last4: charge.source.last4,
card_type: charge.source.brand,
card_exp_month: charge.source.exp_month,
card_exp_year: charge.source.exp_year
)
end
end
StripeEvent.configure do |events|
events.subscribe 'charge.succeeded', RecordCharges.new
end
Irgendwelche Vorschläge? Vielen Dank!
'subscription' gibt nil zurück. Also würde ich es wahrscheinlich 'find_by!' Machen und einen 'ActiveRecord :: RecordNotFound' Fehler auslösen, um es zu retten. Hat die Ladung einen Kunden? –