Почему мой Spree:: Обновление записи пользователя?
Я запустил новый проект на Spree 3.0.1, и мне нужно внедрить систему подарочных карт, которая привязывает определенную сумму кредита в магазине к пользователю при получении подарочной карты. Учитывая, что с версии 3.0.1 функциональность магазина не была реализована, я пытаюсь реализовать простую систему самостоятельно.
Я запустил миграцию, чтобы добавить столбец в Spree::User с указанием суммы кредита в магазине. Также был добавлен новый шаг в процессе оформления заказа, когда пользователь может использовать некоторые или все доступные кредиты магазина. Этот шаг генерирует корректировку цены, уменьшая цену заказа. В Spree::Order было также создано поле для хранения информации о том, какая часть кредита магазина используется для транзакции.
Пока что это было сделано без особых проблем. Настоящая проблема возникает, когда я пытаюсь обновить кредит, оставленный пользователем. У меня есть этот код в моем order_decorator.rb
Spree::Order.state_machine.after_transition to: :complete, do: :update_user_credit
def update_user_credit
credit_used = self.credit_used
initial_credit = self.user.credit
self.user.update(credit: initial_credit - credit_used)
end
Чтобы обновить кредит магазина, я запускаю обратный вызов после завершения заказа, обновляя кредит пользователя. По какой-то причине эта инструкция никогда не выполняется.
Обновление кредита пользователя из консоли выполнено. Пользователь доступен из обратных вызовов, так как я использовал кредит для некоторых проверок.
У кого-нибудь есть идеи, почему Spree::User.credit не обновляется?
1 ответ
Трудно сказать, не видя ваших логов, но я предполагаю, что вы не занесли в белый список кредитные параметры. Если это так, вы можете добавить это в initializers/spree.rb
Spree::PermittedAttributes.user_attributes << :credit
Если нет, не могли бы вы опубликовать свой журнал сервера для действия обновления?