繁体   English   中英

Rails-如何构建用户数组

[英]Rails - How to build an Array of users

我有以下2种型号:

Projects, has_many projects
Users belong_to Projects

@project = Project.find(1)
@project.users --- outputs a lot of users

我要执行的操作如下:给定一个说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

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

纯Ruby方法:

@users = Project.find(project_ids).map(&:users).flatten.uniq

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

@users = User.where(:project_id => project_ids)

我将从坚持Rails约定开始

  class Project < ActiveRecord::Base
        has_many :users
  end

  class User < ActiveRecord::Base
        belongs_to :project
  end

接下来,假设您有@projects,其中包含您提到的三个项目(或更多项目)

  @needed_users = Array.new

  @projects.each do |project|
     project.users.each do |user|
        if !@needed_users.includes?(user)
           @needed_users.push(user)
        end
     end
  end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM