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

On Tue, Jan 10, 2012 at 11:23 PM, Mohamad El-Husseini <
[email protected]> wrote:

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

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


Peter V.
http://twitter.com/peter_v
http://rails.vandenabeele.com

You can try This way

@user.includes(celebs)

Sent from my iPad

On 10 January 2012 22:23, Mohamad El-Husseini [email protected]
wrote:

@list = user.list(:include => :celebs)
@list = user.list.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