Rails:多对多关联

时间:2015-01-25 14:46:26

标签: ruby-on-rails ruby ruby-on-rails-4 many-to-many associations

在我的Rails应用程序中,我想计算给定作业和其他作业之间的所有相同功能(作业has_many:fonctions),所以我正在做我的工作模式

  def fonctions_score
    (Job.fonctions.collect(&:id) & self.fonctions.collect(&:id)).size
  end

我已经完成了这个

  def fonctions_score
    Job.includes(:fonctions).where(fonctions: { id: self.fonctions.pluck(:id) } ).size
  end

但是当所有作业相似时它返回2,而当它们都不相似时返回1

但这会导致错误<{1}}

1 个答案:

答案 0 :(得分:0)

这将返回给定作业与作为参数传递的另一作业之间的重复函数数。

在你的工作模式中:

def count_indentical_functions job_id
  JobFonction.where(id: self.id)
    .joins('INNER JOIN job_fonctions b
            ON b.job_id = #{job_id}
            AND job_fonctions.fonction_id = b.fonction_id')
      .count
end

所以,现在你可以通过调用来比较一个作业:

job.count_identical_functions other_job_id

我尽我所能。如果它不是您真正想要的,请尝试清楚地重新表述您的问题,并提供所需输出的示例。