我有一个与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(未初始化的常量顺序)。
我当前的 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
答案 0 :(得分:3)
我有正确的想法。一旦我通过指定模块修复了与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