Jason Fb wrote in post #1150062:
> It took me several years of working with Rails to understand this
> nuance, and I believe it is poorly documented in the AR guide. "reading
> the source" may be a good idea for some, but remember the Rails source
> isn't easy for everyone to read (although a good idea!).
I don't mind so much *reading* the source then relying on the
information we get from it. Even if you see that something is
implemented in a particular way, you don't know whether it is just
incidentally (and in the next minor release will be implemented
differently), or whether it is an undocumented feature (which might or
might not make it in the API), or whether it is really part of the
"official" interface. If something is specified in the API, there is at
least good hope that we don't run into incompatibilities (although when
looking at the evolution of Rails, this principle seems to have been
violated occasionally).
> Since it is so important to how AR works, I think this facet of AR
> should be documented better in the AR guide (specifically, that the AR
> methods return ActiveRelation objects which don't actually fetch
> anything until you want to look at them). It's a brilliant
> implementation pattern, but counter-intuitive to newbies.
It's just "lazy evaluation" at work, and as such not so much
"counter-intuitive". It's only that it is not obvious that the design
choice was done in this way...
Ronald
>
> -Jason