Ok, I have a silly question. How does Rails know to generate SQL from
this:
@comment = @post.comments.find(params[:id])
If @post.comments.class is Array then how does Array know to write SQL
with something like my_array.find(1)?
Does Rails add something to Ruby's Array class to handle that?
In any case it works. I am just curious how it does.
Never mind, I get it now. It's has_many that adds the needed
collection methods to generate the needed SQL.
Robert, theres a lot more to it than that. Enough more that
you were nearly right in the subject line.
I don't know the full details, but Find does not return an Array.
It returns a Proxy object, which looks like (quacks like) an
Array.
ActiveRecord will also add dynamic finders at runtime, with some
more method_missing? cleverness. Its probably well worth your
time to study ActiveRecord in detail. Rails gets most of its magic
from it, and you will find a lot of solid resources behind this.
Also ActiveRecord can be used outside of Rails and very easily too;
making it a useful general purpose tool for even ad-hoc scripting.