内にhas_manyは私がComment
モデルとRailsアプリケーションを持って、それぞれのコメントhas_many :notifications
のRails:タイムフレーム
が、私はこのhas_many
関係にdependent: :destroy
を設定したいNotification
モデル。問題は、通知テーブルが巨大であることです(2,000万レコード程度)。だから私はコメントを破棄しようとすると、通知テーブルを調べるのに数分かかります。
通常、私は通知テーブルを照会するときに、created_at
の範囲を指定するだけです。これはかなりうまくいくようです。
通知のすべてのコメントのcreated_at
の24時間以内に作成された - だから私は関係をスピードアップするために考え出した、私はちょうど
has_many :notifications, -> { where(created_at: created_at..(created_at + 1.day)) }, dependent: :destroy
のようなものを追加します。しかしcreated_at
ので動作しませんもちろん可能性があり元のコメントではなく、Notification::ActiveRecord_Relation
のインスタンスで呼び出されています。
このコメントのhas_many
クエリでは、コメントの属性を参照することはありますか?
あなたの質問に答えることはできませんが、通知を '破壊する '必要がありますか、それとも':削除'できますか?それはずっと速くなければなりません。あるいは、依存関係を削除し、バックグラウンドジョブを起動してそれらをクリーンアップすることもできます。 –