有没有办法通过关联来限制急切加载的对象的数量?
考虑以下示例:
class Person < ActiveRecord::Base
has_many :apples
end
class Apple < ActiveRecord::Base
belongs_to :person
end
我想让所有的人,加载他们的苹果...
Person.includes(:apples).limit(10)
...但我想将apple
每人加载的对象数量限制为 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
关联加载的对象数量。我是在把自己引向一个兔子洞,还是错过了一些明显的东西?