我正在使用Rails 4.2上的spreecommerce 3.0.2应用
Spree在spree_shipping_rates表上定义了一个索引(取自我的schema.rb文件):
add_index "spree_shipping_rates", ["shipment_id", "shipping_method_id"], name: "spree_shipping_rates_join_index", unique: true, using: :btree
但是,当spree_shipping_rates记录被销毁时,似乎索引条目仍然存在,因为我在再次创建相同记录时遇到以下错误:
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "spree_shipping_rates_join_index"
DETAIL: Key (shipment_id, shipping_method_id)=(3, 3) already exists.
我的问题是如何在销毁spree_shipping_rates记录时确保删除关联的唯一索引?
某些背景信息:
在狂欢中,当用户签出并输入装运和帐单地址并保存时,将创建订单的新货件并销毁任何现有货件。
if states[:delivery]
before_transition to: :delivery, do: :create_proposed_shipments
.
.
end
def create_proposed_shipments
adjustments.shipping.delete_all
shipments.destroy_all
self.shipments = Spree::Stock::Coordinator.new(self).shipments
end
has_many :shipping_rates, -> { order('cost ASC') }, dependent: :delete_all
如您所见,当订单的货物被销毁时,所有相关的运费都会被“删除”。
上述代码块中的:delete_all
是否不删除索引?这应该是:destroy
吗?