2010-11-29 2 views
1

Je suis nouveau sur les rails, alors s'il vous plaît excusez-moi pour cette question peut-être très stupide.Rails: Trouver tous les X qui sont assignés à un Y

J'ai un utilisateur modèle et un modèle Experiment, tous deux liés par une relation HABTM.

Lorsque je veux afficher, disons: /experiments/1/users, il me montre tous les usere il y a, pas filtré par l'expérience. Ok, c'est à cause du UsersController.

Dans le UsersController, je définis donc:

# GET /users 
# GET /experiment/:experiment_id/users 
def index 

    if (params[:experiment_id] == nil) 
    @users = User.all 
    else 
    @users = # HOW DO I FIND THE USERS FOR THE EXP? 
    end 

    respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @users } 
    end 
end 

Je veux filtrer les utilisateurs, mais quelque chose comme User.find_all_by_experiment_id n'existe pas: undefined method find_all_by_experiment_id » pour #`

Que puis-je utiliser pour obtenir les utilisateurs affectés à l'expérience en cours?

Répondre

4

Je pense que Experiment.find (params [: experiment_id]). Les utilisateurs devraient fonctionner.

+0

Parfait. Je ne savais pas que je pouvais aller dans l'autre sens. – slhck

2

D'abord, vous devez définir dans le modèle Experiment qu'il a plus d'utilisateurs. Je suppose qu'il existe une relation 1-to-n ou n-to-n entre Experiment et les utilisateurs. Cela ressemble à ceci:

class Expetiment < ActiveRecord::Base 
    has_many :users 
    ... 

Puis, quand vous regardez l'expérience dans le contrôleur de l'expérience en appelant Experiment.find(params[:experiment_id]), vous pouvez appeler sa méthode users pour obtenir la liste des utilisateurs liés à l'expérience.

Questions connexes