0

我在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 没有更新?

4

1 回答 1

0

没有看到你的日志很难说,但我猜你没有将信用参数列入白名单。如果是这种情况,您可以将其添加到 initializers/spree.rb

Spree::PermittedAttributes.user_attributes << :credit

如果没有,您能否发布您的服务器日志以进行更新操作?

于 2015-07-16T20:02:30.637 回答