I'm trying to create a page where all my users are listed, and every movie they've added to their account.
My UserController index def
def index @users = User.all if logged_in? @user = User.find(session[:user_id]) @movies = @user.movies end end
And my user index.html.haml
#content#users - @users.each do |user| %li = link_to user.name, user .movie - @movies.each do |movie| .movie-frame = movie.title = image_tag(movie.image)
At the moment the
[email protected] do shows all the movies that are added to my database, it does this for every user. And not specifically the movies that that user has in his account. How do I show each movie for each user?
So you'll need a join table between Movies and Users. Something like
UserMovie is a standard naming scheme for that. You could also give them a name like
In essence you'll do this:
class User < ActiveRecord::Base has_many :user_movies has_many :movies, through: :user_movies end class UserMovie < ActiveRecord::Base belongs_to :movie belongs_to :user end class Movie < ActiveRecord::Base has_many :user_movies has_many :users, through: :user_movies end
This lets you access
@user.movies to get their movies and you can also get a list of a movie's users (people who favorited it for example) by doing
You will need some mechanism to create the join table records, but if you check out the screencast I did on hearts/favoriting/liking, that's pretty much exactly what you'll be doing for that.
Join 30,005+ developers who get early access to new screencasts, articles, guides, updates, and more.