Rails:找到分配给一个Y的所有X.

时间:2010-11-29 12:38:30

标签: ruby-on-rails ruby find

我是铁道新手,所以请原谅我这个可能非常愚蠢的问题。

我有一个模型用户和一个模型实验,都是通过HABTM关系链接的。

当我想要显示时,让我们说:/experiments/1/users,它显示我所有的用途,而不是通过实验过滤。好的,那是因为UsersController

UsersController中,我因此定义:

# 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

我想过滤用户,但User.find_all_by_experiment_id之类的内容不存在:undefined method find_all_by_experiment_id'代表#`

我可以使用哪些方法来获取分配给当前实验的用户?

2 个答案:

答案 0 :(得分:4)

我认为Experiment.find(params [:experiment_id])。用户应该工作。

答案 1 :(得分:2)

首先,您应该在实验模型中定义它有更多用户。我想在实验和用户之间存在1对n或n对n的关系。这看起来像这样:

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

然后,当您通过调用Experiment.find(params[:experiment_id])在实验控制器中查找实验时,您可以调用其users方法来获取与实验相关的用户列表。