【问题标题】:How do I create shipments at the time an order is created through the Spree API?如何在通过 Spree API 创建订单时创建发货?
【发布时间】:2014-07-23 15:09:35
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails spree


    【解决方案1】:

    我的想法是对的。一旦我通过指定模块修复了与 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多