【发布时间】:2015-03-23 00:06:57
【问题描述】:
我正在尝试在给定工作的显示页面上显示相关工作。当用户查看任何特定工作时,应根据标签(我正在使用作为可标记的 gem)、工作功能(工作 has_many:job_functions)、经验显示所有相关工作(必须根据其权重显示) & 国家(我正在使用国家/地区选择 gem)。
如果有一份工作的所有这些标准都与给定的工作相似,那么它的权重 = 100
如果另一个职位只有标签、工作职能和国家/地区相似,则它的权重 = 70。所以我可以根据重量对工作进行排序
其实我只是根据标签找到相关工作
@related_jobs = Job.tagged_with(@job.tag_list, any: true)
而且我还可以根据工作职能找到相关工作
@related_jobs = Job.includes(:functions)
.where('jobs.id != ?', @job.id)
.where(functions: { id: @job.functions.pluck(:id) } )
【问题讨论】:
-
这是一个伟大的目标。你有什么问题?
-
我怎样才能做到这一点?我的代码放在哪里?它似乎不会在控制器中
-
不,这不属于控制器。这似乎应该是 Job 类上的一个方法
-
但是我如何将给定的工作与我的工作模型中的其他工作进行比较,我该如何做?
-
模型是作业的一个实例,模型中不能有两个可比较的调用。每次调用 Job 时,都会创建该 Job 模型的新实例。将两个函数放入 Job 模型中,然后在控制器中比较它们,或者如果它看起来对您不利,请在控制器下关注它。
标签: sql ruby-on-rails ruby ruby-on-rails-4 matching