如何通过Spree API创建订单时创建货件?

时间:2014-07-23 15:09:36

标签: ruby-on-rails spree

我有一个与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

1 个答案:

答案 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