1
は、次の2つのモデルがあるとします。一時的にunscopeモデル協会
class Walrus < ActiveRecord::Base
default_scope { where("destroyed_at IS NULL") }
has_many :bubbles, dependent: :destroy
end
class Bubble < ActiveRecord::Base
default_scope { where("destroyed_at IS NULL") }
belongs_to :walrus
end
私はセイウチを破壊した場合さて、それはまた、(すなわちWalrus
のdestroyed_at
を設定し、Bubble
モデルを関連する。)彼らの気泡を破壊する私がしたい場合破壊されたWalrus
レコードを見つけるために、私はこれを行うことができます:私は必要なもの
frank = Walrus.create!
frank.bubbles.create!
frank.destroy
# Destroys both the walrus and bubble records
Walrus.unscoped do
frank = Walrus.first
# => <Walrus...
frank.bubbles
# => []
end
をも関連をunscopeする方法です。
実世界のアプリケーションは、APIを介して返される関連がたくさんあるモデルなので、手動でそれぞれを調べて関連付けを解除することはできません。
より良い方法は、デフォルトのスコープを使用することではなく、問題を解決しない名前付きスコープ –
@МалъСкрылевъを使用します。現在デフォルトのスコープを使用しているところでは、 'where(destroyed_at:nil)'スコープを再帰的に適用するように切り替える必要があります。それは私たちがここに持っているのと同じ問題です。 – Chris