我有一个与 Spree API 集成的应用程序。在 Spree API 的默认流程中,当订单从 core.app.models.spree.order.checkout.rb 的第 90 行过渡到交付时创建发货:
before_transition :to => :delivery, :do => :create_proposed_shipments
因为我在创建订单的初始帖子中同时指定了行项目和送货地址,所以我希望 Spree 也创建发货。
到目前为止,我创建了一个 orders_controller_decorator,我在其中用原始创建代码加上对 create_proposed_shipments 的调用覆盖了 create 方法,但我从我从原始 create 方法复制的代码中获取 NameError(未初始化的常量 Order)。
我当前的 orders_controller_decorator:
Spree::Api::OrdersController.class_eval do
def create
authorize! :create, Order
@order = Spree::Core::Importer::Order.import(current_api_user, order_params)
@order.create_proposed_shipments
respond_with(@order, default_template: :show, status: 201)
end
end
最佳答案
我的想法是正确的。通过指定模块修复与 Order 相关的 NameError 后,一切都按预期工作。
module Spree
Api::OrdersController.class_eval do
def create
authorize! :create, Order
@order = Core::Importer::Order.import(current_api_user, order_params)
@order.create_proposed_shipments
respond_with(@order, default_template: :show, status: 201)
end
end
end
或者,我也可以这样做
Spree::Api::OrdersController.class_eval do
def create
authorize! :create, Spree::Order
@order = Core::Importer::Order.import(current_api_user, order_params)
@order.create_proposed_shipments
respond_with(@order, default_template: :show, status: 201)
end
end
关于ruby-on-rails - 如何在通过 Spree API 创建订单时创建发货?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914243/