【发布时间】:2014-03-04 07:33:57
【问题描述】:
我正在尝试使用 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 请求,请求符合上述代码的预期,并且它有效。设置和保存之间发生了错误。
更新 3:可以通过提取 BraintreeRails::Subscription 对象的属性,使用 Braintree::Subscription 调用 API,并使用 BraintreeRails::Subscription.find 将其加载回对象来解决问题。不过,这绝对不是最佳选择,因为它不是很干净,并且需要额外的 API 调用。
【问题讨论】:
标签: ruby-on-rails subscription recurring-billing braintree braintree-rails