On Tuesday, February 2, 2016 at 4:39:01 PM UTC-6, Jeremy Evans wrote:
>
> On Tuesday, February 2, 2016 at 12:54:21 PM UTC-8, Mike Pastore wrote:
>>
>> I see you've written in the past that there isn't much use in
>> eager-loading relationships on single models. I have a case where I am
>> retrieving a single object but it has a tree of one-to-many relationships
>> hanging off of it. (I am sideloading related records for a json:api
>> payload.) In this case, it would make sense to eager load the
>> relationships, otherwise the serializer causes Sequel to fire off a query
>> for each element of the tree as it enumerates through the relationships.
>>
>
> You can use the :eager association to eager load dependent associations.
> You can also do this on a per-load basis:
>
> obj = Model.first
> obj.association{|ds| ds.eager(:dep_association)}
>
> Short of doing something like dataset.eager(foo).where(:id =>
>> bar).all.first, is there any way to use Sequel::Dataset#eager with
>> #first/first! and #with_pk/with_pk!? If it can't be added to Sequel, how
>> might I go about writing a plugin to enable this behavior?
>>
>
> The example you gave is the best way to handle what you want at present,
> if you don't want to use an approach I detailed above.
>
> If you really want to do this via a plugin, I'm guessing extending the
> eager_each plugin should be possible to handle this case. I think
> eager_each actually handled it in the past, but some refactoring means it
> no longer works.
>
Thanks Jeremy. I appreciate the quick response. I'm actually having pretty
good luck with the tactical_eager_loading plugin, to the point that I may
be able to get rid of my own clumsy eager-loading pattern entirely! Any
gotchas I need to be aware of?
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.