Braintree-Rails gemを使用して割引オブジェクトをサブスクリプションに追加しようとしていますが、適用されません。私のコードが間違っているに違いないと推測していますが、実際の例が見つかりません。
discount = BraintreeRails::Discount.find(params[:subscription_promo])
subscription = @plan.subscriptions.build permitted_params[:subscription]
subscription.discounts << discount
# ...
subscription.save
をダンプするdiscount
と、正しくロードされます。サブスクリプションは問題なく作成されますが、定価です。割引はありません。サブスクリプションに割引を追加するにはどうすればよいですか?
更新:直接クエリを変更しようとしましたが、それは役に立ちませんでした。
@subscription.raw_object.discounts = {add:[{inherited_from_id: discount.id}]}
更新 2 : 上記のコードで期待されるリクエストを使用して、API に対して直接 Braintree リクエストを実行したところ、機能しました。設定と保存の間に何か問題が発生しています。
更新 3BraintreeRails::Subscription
:オブジェクトの属性を抽出しBraintree::Subscription
、API を呼び出して、それをBraintreeRails::Subscription.find
オブジェクトにロードし直すことにより、回避策が可能です。ただし、これはあまりクリーンではなく、追加の API 呼び出しが必要になるため、最適とは言えません。