アソシエーションを介して積極的に読み込まれるオブジェクトの数を制限する方法はありますか?
次の例を検討してください。
class Person < ActiveRecord::Base
has_many :apples
end
class Apple < ActiveRecord::Base
belongs_to :person
end
りんごを積み込んでいるすべての人を集めたい...
Person.includes(:apples).limit(10)
apple
...しかし、 1 人あたりにロードされるオブジェクトの数を 5 に制限したいので、これはすべて apples
をロードします。
私は次のことを試しました:
Person モデルで新しいリレーションを定義する
class Person < ActiveRecord::Base has_many :apples has_many :limited_apples, class_name: 'Apple', limit: 5 end
使用する
ActiveRecord::Associations::Preloader
people = Person.limit(50) ActiveRecord::Associations::Preloader.new(people, :limited_apples, limit: 5).run
どちらのアプローチも、:apples
関連付けを通じてロードされるオブジェクトの数を制限できません。私はうさぎの穴に自分自身を導いていますか、それとも露骨に明らかな何かを見逃していますか?