On May 16, 2014, at 2:35 PM, Lawrence Wu <[email protected]> wrote:
> I'd like to deprecate methods like includes and eager_load in Rails since I
> think it is possible to automatically detect when they are needed. Ideally
> the developer could know very little about how databases work and still get
> very efficient queries using just the ORM. What do other people think?
I’m not terribly convinced that there’s a useful heuristic to automatically
make the right choices for eager-loading, since the right associations to load
are typically driven by what the code does with the results.
For instance, this code fragment should either use something different than
`present?` or should use an eager-load, but the right choice depends on what
happens after the records are loaded:
@posts.each do |post|
# present? will cause the comments association to load
if post.comments.present?
# do something
# if post.comments is referenced here, it should have been eager-loaded
# if it isn’t referenced, the present? should really be changed to exists?
or similar
end
end
Even if such a heuristic existed, it would still be wrong some of the time - so
things like `includes` and `eager_load` would still be needed to specify the
correct behavior in those cases.
It’s definitely worth discussing, but it’s going to (IMO) face a pretty steep
climb to success.
—Matt Jones
signature.asc
Description: Message signed with OpenPGP using GPGMail
