我有以下模型:
class Folder < ApplicationRecord
has_many :files, -> { reorder_descending }, dependent: :destroy
has_many :not_deleted_files, -> { not_deleted.reorder_descending }, class_name: 'File'
end
class File < ApplicationRecord
belongs_to :folder
scope :not_deleted, -> { where('deleted_at IS NULL ') }
scope :reorder_ascending, -> { reorder('enactment_date ASC, finding_date ASC, id ASC') }
scope :reorder_descending, -> { reorder('enactment_date DESC, finding_date DESC, id DESC') }
def not_deleted_files
folder.not_deleted_files
end
end
现在我有一个文件夹,并且遍历所有文件。 在File类中,我有很多使用not_deleted_files方法的方法。每次使用此方法时,都会触发一个新查询。即使它们都具有相同的父文件夹(文件夹)。
查询也要缓存,我认为应该有一种方法可以完全阻止查询。
答案 0 :(得分:1)
您可以使用inverse_of
,因为Rails可以优化对象的加载,因此parent_object
和child_object.parent
将引用内存中的同一对象,而不是加载同一记录的另一个副本。
我很高兴它有所帮助。 :)