On 18 September 2011 01:49, maskiran <[email protected]> wrote:
> When I access the photos.all, I can get the user email by
> photos.first.user.email
>
> 1) Am I violating MVC here ?

No you're not, as it's the model (via ActiveRecord) doing the query -
that's exactly how you're supposed to do it :-)
(but do try to avoid directly accessing models in views; don't do
"Photos.first.user.email" in an erb file... have @photos populated
from the controller so you can call @photos.first.user.email in the
view)

> 2) Since the query goes 100 times in the view, should there be a
> better way to get all the data at once in the controller/model and
> pass all that to the view.
>
> I am coming from PHP world where I used to write queries and there I
> used to do a join on photos table and got all the data at once. Is
> this join costlier than getting data in each query as above

As Walter says, :include the :user in the photos query to eagerly load
them. This way Rails will do the DB join and return all the data for
you.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to