我对红宝石很新,并试图寻找这个,但没有解决方案适用于我之后。
我有一个公司与工作协会。因此,一家公司有很多工作,每份工作都属于一家公司。
搜索作业后 - 我想查询保存到每个作业的关联公司ID。
所以在搜索了一个职称之后,例如" Ruby" - 我想返回与该标题及其相关公司数据匹配的所有作业。以下查询类型的唯一问题是,作业ID被公司ID替换,我永远无法访问每个作业ID
@jobs_list = Jobs.select("jobs.*, companies.*").where("title LIKE ?", "%#{params[:jobs][:title]}%").joins("LEFT JOIN companies on jobs.company_id = companies.id")
任何建议/更好的做法?
答案 0 :(得分:2)
首先确保您的Job
模型有一行:belongs_to :company
然后使用includes
急切加载公司数据:
@jobs = Jobs.where("title LIKE ?", "%#{params[:jobs][:title]}%").
includes(:company)
您现在可以访问公司数据,而无需进一步的数据库查询:
@jobs.each do |job|
job_name = job.name
company_name = job.company.name
end