Pulling data from a one-to-many association

Another newbie question. My dummy app has the following models:

class User < ActiveRecord::Base

has_one :list

end

class List < ActiveRecord::Base

belongs_to :user

has_many :celebs

end

class Celeb < ActiveRecord::Base

belongs_to :list

end

I want to load a user’s list, and include the celebs that belong to it. I tried the following:

@user = current_user

@list = user.list.joins(:celebs)

@list = user.list(:include => :celebs)

@list = user.list.includes(:celebs)

The result was some errors/unexpect output. The expected query is:

SELECT * FROM lists INNER JOIN lists.id ON celebs.list_id WHERE lists.user_id = @user_id

Another newbie question. My dummy app has the following models:

class User < ActiveRecord::Base

has_one :list

Try to add here:

  has_one :list_with_celebs, :class_name => "List", :include => :celebs

end

class List < ActiveRecord::Base

belongs_to :user

has_many :celebs

end

class Celeb < ActiveRecord::Base

belongs_to :list

end

I want to load a user’s list, and include the celebs that belong to it. I tried the following:

@user = current_user

@list = user.list.joins(:celebs)

@list = user.list(:include => :celebs)

@list = user.list.includes(:celebs)

@user.list_with_celebs

HTH,

Peter

You can try This way

@user.includes(celebs)

You don't normally need to use joins or includes for such things. you can just say @list = @user.list then celebs = @list.celebs or just celebs = @user.list.celebs. You may have to test for the case where @user.list is nil if it is possible to have a user that has no list

Colin