Я пытаюсь добавить объект скидки к подписке с драгоценным камнем braintree-rails, но он не применяется. Я предполагаю, что мой код должен быть неправильным, но я не могу найти рабочий пример.Добавить скидку на подписку на товарный знак Braintree
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}]}
Update 2: Я побежал прямой запрос Braintree против API с запросом ожидаемого приведенного выше кода, и это сработало. Что-то не так происходит между настройкой и сохранением.
Обновление 3: Чтобы обойти проблему можно путем извлечения атрибутов BraintreeRails::Subscription
объекта, используя Braintree::Subscription
для вызова API, и используя BraintreeRails::Subscription.find
, чтобы загрузить его обратно в объект. Это определенно не оптимально, хотя, поскольку он не очень чистый и требует дополнительного вызова API.