0

dependent: :destroyActiveRecord モデルで循環オプションを使用しても安全ですか?

class Student < ActiveRecord::Base
  has_one :user, dependent: :destroy
end
class User < ActiveRecord::Base
  belongs_to :student, dependent: :destroy
end

を削除するuserと、関連する が削除されstudentます。およびその逆。

4

1 に答える 1

0

はい。AR は、単一のトランザクション内でエンティティごとに削除クエリを発行するだけです。したがって、ユーザーに 2 人の生徒 (a と b) がいるとします。学生 a を削除すると、AR は学生 a を削除し、ユーザーの削除を引き起こし、学生 b の削除を引き起こし、最終的にユーザーの重複削除を引き起こします。重複削除は (小さなパフォーマンス ヒットは別として)、いかなる種類のエラーも引き起こしません。逆に、ユーザーを削除しても問題ありません。

于 2013-08-21T23:47:21.067 に答える