При инициализации объекта ApplicationRecord с существующим id, все связанные ассоциаций начинают удаляться из БД при их назначении
class Order < ApplicationRecord
has_one :order_payment, dependent: :delete
end
class OrderPayment < ApplicationRecord
belongs_to :order
end
> order = Order.create!
=> #<Order id: 1>
> OrderPayment.create! order_id: order.id
=> #<OrderPayment id: 1, order_id: 1>
> Order.new(id: 1, order_payment: OrderPayment.new)
OrderPayment Load (4.8ms) SELECT "order_payments".* FROM "order_payments" WHERE "order_payments"."order_id" = ? LIMIT ? [["order_id", 1], ["LIMIT", 1]]
OrderPayment Destroy (13.8ms) DELETE FROM "order_payments" WHERE "order_payments"."id" = ? [["id", 1]]
Rails 5.2.3, ruby 2.6.4