我有一个rails应用程序,它有一个工作模型和一个公司模型。工作是belongs_to:公司和公司has_many:工作
这份工作有:job_title,country和company_id 该公司有:company_name和company_industry 我希望每个工作根据国家company_industry和company_id的相似性来显示相关工作,有人可以指导我实现这个功能吗?
更新
这是我的工作模式
class Job < ActiveRecord::Base
validates_presence_of :company_name, :job_title, :experience, :contrat, :job_description, :profile_recherche, :job_contact
belongs_to :company
belongs_to :user
searchable do
text :job_title, boost: 4
text :profile_recherche
end
def company_name
company.try(:name)
end
def company_name=(name)
self.company = Company.find_or_create_by(name: name) if name.present?
end
extend FriendlyId
friendly_id :job_title, use: :slugged
end
这是我的工作控制器
class JobsController < ApplicationController
before_action :set_job, only: [:show, :edit, :update, :destroy]
def index
@jobs = Job.paginate(page: params[:page], per_page: 6)
end
def search
@jobs = Sunspot.search(Job) do
keywords params[:query]
fulltext params[:query]
paginate(page: params[:page], per_page: 1)
end.results
respond_to do |format|
format.html { render :action => "index" }
end
end
def show
end
def new
@job = Job.new
end
def edit
@job = Job.find_by_slug(params[:id])
end
def create
@job = Job.new(job_params)
respond_to do |format|
if @job.save
format.html { redirect_to @job}
else
format.html { render action: 'new' }
end
end
end
def update
respond_to do |format|
if @job.update(job_params)
format.html { redirect_to @job }
else
format.html { render action: 'edit' }
end
end
end
def destroy
@job.destroy
respond_to do |format|
format.html { redirect_to jobs_url }
end
end
private
def set_job
@job = Job.find_by_slug(params[:id])
end
def job_params
params.require(:job).permit(:job_title, :experience, :contrat, :job_description, :profile_recherche, :job_contact, :company_id, :company_name)
end
end
答案 0 :(得分:0)
试试这个 你有特殊的工作,然后得到相关的工作
job = Job.where(id: params[:job_id]).first
related_jobs = Job.where("id != '#{job.id}'").where("company_id = '#{job.company.id}' OR country = '#{job.country}' ")
它将为您提供属于当前公司的所有相关工作,或者与您当前工作所在国家/地区相同的工作。