Module: Spree::AdjustmentSourceDecorator
- Defined in:
- app/models/concerns/spree/adjustment_source_decorator.rb
Instance Method Summary collapse
-
#create_unique_adjustment(order, adjustable) ⇒ Object
@gem-override spree_core-5.3.6/app/models/concerns/spree/adjustment_source.rb#create_unique_adjustment 並行リクエスト時の重複 adjustment 作成を防ぐため、order を排他ロックしてから 既存チェックと作成を実行する。これがないと、ブラウザ複数タブから同一 order に 同時にカート操作されたとき、
already_adjusted?の SELECT が両リクエストで false を返し、同じ source の adjustment が二重に INSERT されてしまう。. -
#create_unique_adjustments(order, adjustables, &block) ⇒ Object
@gem-override spree_core-5.3.6/app/models/concerns/spree/adjustment_source.rb#create_unique_adjustments.
Instance Method Details
#create_unique_adjustment(order, adjustable) ⇒ Object
@gem-override spree_core-5.3.6/app/models/concerns/spree/adjustment_source.rb#create_unique_adjustment
並行リクエスト時の重複 adjustment 作成を防ぐため、order を排他ロックしてから
既存チェックと作成を実行する。これがないと、ブラウザ複数タブから同一 order に
同時にカート操作されたとき、already_adjusted? の SELECT が両リクエストで
false を返し、同じ source の adjustment が二重に INSERT されてしまう。
9 10 11 |
# File 'app/models/concerns/spree/adjustment_source_decorator.rb', line 9 def create_unique_adjustment(order, adjustable) with_order_lock(order) { super } end |
#create_unique_adjustments(order, adjustables, &block) ⇒ Object
@gem-override spree_core-5.3.6/app/models/concerns/spree/adjustment_source.rb#create_unique_adjustments
15 16 17 |
# File 'app/models/concerns/spree/adjustment_source_decorator.rb', line 15 def create_unique_adjustments(order, adjustables, &block) with_order_lock(order) { super } end |