Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # assumes class Moviegoer with has_many :movies
- # in controller method:
- @fan = Moviegoer.find_by_email(email) # causes table scan if no index
- # in view:
- - @fan.favorite_movies.each do |movie|
- // BAD: each time thru this loop causes a new database query!
- %p= movie.title
- # better: eager loading of the association in controller.
- # Rails automatically traverses the through-association between
- # Moviegoers and Movies through Reviews
- @fan = Moviegoer.includes(:movies).find_by_email(email)
- # now we have preloaded all the movies this moviegoer reviewed.
- # in view:
- - @fan.movies.each do |movie|
- // GOOD: this code no longer causes additional queries
- %p= movie.title
- # BAD: preload association but don't use it in view:
- %p= @fan.name
- // BAD: we never used the :favorite_movies that were preloaded!
Advertisement
Add Comment
Please, Sign In to add comment