使用什么类型的查询以及如何 - JOIN / UNION

时间:2012-12-17 21:41:43

标签: ruby-on-rails ruby postgresql

我对红宝石很新,并试图寻找这个,但没有解决方案适用于我之后。

我有一个公司与工作协会。因此,一家公司有很多工作,每份工作都属于一家公司。

搜索作业后 - 我想查询保存到每个作业的关联公司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")

任何建议/更好的做法?

1 个答案:

答案 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