Рельсы: Найти все X, которые назначены одному Y - PullRequest
1 голос
/ 29 ноября 2010

Я новичок в рельсах, поэтому, пожалуйста, извините меня за этот, возможно, очень глупый вопрос.

У меня есть пользователь модели и эксперимент по модели, оба связаны отношением 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 ]

4 голосов
/ 29 ноября 2010

Я думаю, что Experiment.find (params [: эксперимент_ид]). Пользователи должны работать.

2 голосов
/ 29 ноября 2010

Сначала вы должны определить в экспериментальной модели, что в ней больше пользователей.Я предполагаю, что между экспериментом и пользователями существует отношение 1 к n или n к n.Это выглядит примерно так:

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

Затем, когда вы просматриваете эксперимент в контроллере эксперимента, вызывая Experiment.find(params[:experiment_id]), вы можете вызвать его метод users, чтобы получить список пользователей, связанных с экспериментом..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...