Closed lef237 closed 1 year ago
Coquote(共同引用)される場合に、アカウントが削除されてしまうと、既存のデータが消えてしまって困るため。
user.rbが次のようになっている。
has_many :quotes, dependent: :destroy
quote.rbが次のようになっている。
has_many :child_quotes, class_name: 'Quote', foreign_key: 'source_quote_id', inverse_of: :source_quote, dependent: :restrict_with_exception
そのためUser→Quote→ChildQuoteの順番で連結しているとき(そのユーザーの引用が共同引用されているとき)に、アカウント削除しようとすると、 ActiveRecord::DeleteRestrictionErrorが出るようになっている。
ActiveRecord::DeleteRestrictionError
つまり、共同引用されていなければ、アカウントを削除することはできるが、それでも一度登録された有益な引用も消えてしまう恐れがある。
両者ともdependent: :destroyを使う方法もあるが、基本的に引用は消えないようにしたいため、このPull Requestのような形にすることに決めた。
dependent: :destroy
アカウント削除は不可にした
Coquote(共同引用)される場合に、アカウントが削除されてしまうと、既存のデータが消えてしまって困るため。
user.rbが次のようになっている。
quote.rbが次のようになっている。
そのためUser→Quote→ChildQuoteの順番で連結しているとき(そのユーザーの引用が共同引用されているとき)に、アカウント削除しようとすると、
ActiveRecord::DeleteRestrictionError
が出るようになっている。つまり、共同引用されていなければ、アカウントを削除することはできるが、それでも一度登録された有益な引用も消えてしまう恐れがある。
両者とも
dependent: :destroy
を使う方法もあるが、基本的に引用は消えないようにしたいため、このPull Requestのような形にすることに決めた。