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