在我的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}}
答案 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
我尽我所能。如果它不是您真正想要的,请尝试清楚地重新表述您的问题,并提供所需输出的示例。