【问题标题】:Rails: many to many associationRails:多对多关联
【发布时间】:2015-01-25 14:46:26
【问题描述】:

在我的 Rails 应用程序中,我想计算给定工作和其他工作之间所有相同的函数(job 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

但是这个返回 undefined method 'fonctions' 错误

【问题讨论】:

  • 您的问题不清楚,请尝试复习并可能重新表述您想要实现的目标
  • 我想根据相似功能的数量对与给定工作相似的工作进行排序,因此我想计算每个工作的相似功能的数量,例如:Job1.fonction="web", " management", strategy" 和 Job2.fonctions ="management", "marketing" 在对与 Job1 相似的工作进行排序时,这必须给我 1/3 的百分比。我希望我很清楚

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


【解决方案1】:

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

在您的工作模型中:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多