views:

18

answers:

1

Hey all,

I'm using a :has_many, :through association to link two models, User and Place

It looks like this -

In User:

  has_many :user_places
  has_many :places, :through=>:user_places

In Place:

  has_many :user_places
  has_many :users, :through=>:user_places

In User_Place

  belongs_to :user
  belongs_to :place
  belongs_to :place_status

On that last one note the place_status.

I want to write a find that returns all places associated to a user with a particular place_status_id.

Place_Status_id is on the join model, user_place.

So basically I want

User.places.where(:place_status_id=>1)

(in rails 3)

but i get an error with that because place_status_id isnt on the place model.

Any ideas? Thanks all.

A: 

I believe you can do your find this way

@user.places.joins(:user_places).where(:user_places => {:place_status_id => 1})

I've never used Rails 3, so I'm sorry if there's any errors.

j.
worked perfectly, thanks.
JoshReedSchramm
You're welcome! :]
j.