2010-07-14 4 views
0

J'utilise un: has_many,: par association pour relier deux modèles, l'utilisateur et la PlaceRails en utilisant un attribut de jointure modèle dans une condition pour trouver

Il ressemble à ceci -

Dans l'utilisateur:

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

En Lieu:

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

Dans User_Place

belongs_to :user 
    belongs_to :place 
    belongs_to :place_status 

Sur ce dernier, notez le lieu_status.

Je souhaite écrire une recherche qui renvoie tous les lieux associés à un utilisateur avec un identifiant_status_status particulier.

Place_Status_id est sur le modèle de jointure, emplacement_utilisateur.

Donc, fondamentalement, je veux

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

(dans des rails 3)

mais je reçois une erreur parce que place_status_id isnt sur le modèle de lieu.

Des idées? Merci a tous.

Répondre

1

Je crois que vous pouvez faire vous permettra de trouver cette façon

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

Je ne l'ai jamais utilisé Rails 3, donc je suis désolé s'il y a des erreurs.

+0

a parfaitement fonctionné, merci. – JoshReedSchramm

+0

De rien! :] –

Questions connexes