Rails - 如何构建用户数组

AnA*_*ice 0 ruby ruby-on-rails ruby-on-rails-3

我有以下两种型号:

Projects, has_many projects
Users belong_to Projects

@project = Project.find(1)
@project.users --- outputs a lot of users
Run Code Online (Sandbox Code Playgroud)

我希望能够做到以下几点:给出一个说3个项目(1,4,11)的列表,迭代每个项目的用户并与三个项目中的所有用户一起构建一个对象,首先组合,而不是复制.

这是我到目前为止,但它没有正常工作:

  @aggregate_users = Array.new


  params[:project_list].split(/, ?/).each do |project|
      @project_temp = Project.find(project)
      @project_temp.users.each do |user|
        @aggregate_users << user
      end
  end
Run Code Online (Sandbox Code Playgroud)

建议?另外,如何避免添加重复用户?谢谢

tok*_*and 5

纯Ruby方法:

@users = Project.find(project_ids).map(&:users).flatten.uniq
Run Code Online (Sandbox Code Playgroud)

SQL方法(正如您所说的用户属于项目):

@users = User.where(:project_id => project_ids)
Run Code Online (Sandbox Code Playgroud)