Rails -如何构建一个用户数组



我有以下两个模型:

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

相关内容

  • 没有找到相关文章

最新更新