decidim-budgets/app/commands/decidim/budgets/checkout.rb in decidim-0.0.4 vs decidim-budgets/app/commands/decidim/budgets/checkout.rb in decidim-0.0.5
- old
+ new
@@ -17,18 +17,22 @@
# - :ok when everything is valid.
# - :invalid if the there is an error.
#
# Returns nothing.
def call
- return broadcast(:invalid) unless @order&.can_checkout?
- checkout!
+ return broadcast(:invalid, @order) unless checkout!
broadcast(:ok, @order)
end
private
def checkout!
- @order.update_attributes!(checked_out_at: Time.current)
+ return unless @order
+
+ @order.with_lock do
+ @order.checked_out_at = Time.current
+ @order.save
+ end
end
end
end
end