如何从多对多关系中删除重复项?

时间:2014-06-25 11:31:23

标签: ruby-on-rails ruby activerecord

在我的Rails 4应用程序中,我有这些模型:

class Person < ActiveRecord::Base

  has_many :jobs
  has_many :projects, :through => :jobs                      

end

class Job < ActiveRecord::Base

  belongs_to :person
  belongs_to :project

end

class Project < ActiveRecord::Base

  has_many :jobs
  has_many :people, :through => :jobs

end

在我的Project模型中,我也有这个功能:

def show_persons_projects(person_id) 
  joins([:jobs, :people]).where("people.id = ?", person_id)
end

问题是这个函数经常多次返回某些项目(取决于它们在jobs表中出现的次数)。

从输出中删除这些重复项的最佳方法是什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

试试这个:

joins([:jobs, :people]).where("people.id = ?", person_id).uniq