limit on eager loaded association ?


If I use :include to eager load a has_many association, can I limit the
number returned on that has_many association. I know I can limit the
amount of records returned, but how do I limit how many are returned on
its association?

If there is a way of limiting the includes explicitely when using the finder, I'm not aware of it.But you can use :limit as one of the options when you are defining the has_many association itself at the model, so you could so something like:

has_many :detail_items, :limit=>10

There are also a number of other options you can use to further selecting which of the detail_items will be retrieved for this association, like :order or :select.


javier ramirez

Aryk Grosz wrote:

I was thinking about that Javier, but I think it would ignore the :limit when it gets eager loaded.

to be honest i assumed it would work when eager loading but didn't try before. I'm successfully using it for a model in which i'm not using eager-loading (just for a combo with ajax, so no need for the details beforehand) and I thought it would be just fine when including. I just tested that on the console and you are right, it will totally ignore the limit option in that case.

I understand the sql for limiting on the association would get a bit tricky, but I was hoping AR would apply the limit when mapping the results. Unfortunately it's not.