レールで依存モデルを部分的に削除/破棄する方法を見つけようとしています。
コードは次のようになります。
class User < ActiveRecord::Base
has_many :subscriptions
has_many :photos, :dependent => :destroy
has_many :badges, :dependent => :destroy
before_destroy :partial_destroy
def partial_destroy
self.photos.destroy_all
self.badges.destroy_all
return false if self.subscriptions.any?
end
...
基本的に、写真とバッジを破棄したいのですが、ユーザーがサブスクリプションを持っている場合は、それらを保持し、ユーザーが破棄されないようにしたいと考えています。
と.each { |obj| obj.destroy }
を使ってみましたが、問題ないようです。delete
delete_all
before_destroy
がfalseを返すたびに、レールが何らかのロールバックを実行しているようです。依存関係の一部を破壊する方法はありますか?