ある時、has_oneの関連レコードがすでに紐づいている状態で、build_association_nameで新たなレコードを作成しsaveをしても、特にエラーなどが起きずレコードが置き換わっていることに気づきました。 この挙動が奇妙だったため何が起きているのか調査をしてみることにしました。 has_oneのbuild_associationでDELETEが実行されていた rails7.1.2で以下のようなモデルを使って検証をしてみます。 ポイントはhas_oneに対してdependent: :destroyのオプションを与えている点です。 class Supplier < ApplicationRecord has_one :account, dependent: :destroy end class Account < ApplicationRecord belongs_to :sup