複数のモデルがあるレールアプリがあります。次の関連付けを持つモデル入力など:-
belongs_to :department, :class_name => 'Department'
has_many :frame_inputs, class_name: 'Frames::FrameInput', foreign_key: 'input_id', :dependent => :destroy
has_many :frames, :through => :frame_inputs, :class_name => 'Frames::Base'
has_many :scales, :foreign_key => :input_id, :dependent => :destroy
has_many :input_items, :class_name => 'InputItems::Base', :foreign_key => :department_id, :dependent => :destroy
has_many :linenumbers, :class_name => 'Frames::InputItemPriority', :through => :input_items
課題:- アプリケーションから入力レコードを削除しようとすると、バックエンドのアクティブ レコード クエリに多くの時間がかかります。つまり、1 つのトランザクションを完了するのに 10 ~ 20 秒かかります。
質問:- すべてのレコードの依存関係を破棄する必要があるため、delete/destroy クエリを実行するためのトランザクション時間を短縮できますか?
レコードを破棄するために、入力コントローラーに次のメソッドがあります
def destroy
@input.destroy
end
破棄クエリを最適化してトランザクション時間を短縮する方法を教えてください。
ありがとう