2017-09-04 99 views
0

對於可怕的問題標題很抱歉。我試圖找到的是;有沒有更好的方式,使用較少的ruby和更多的ActiveRecord/SQL做同樣的事情?迭代哈希鍵並根據屬性查找關聯記錄

Job.level_count.keys[0..2].map do |loi| 
    job_company_id = Job.find_by(level_of_interest: loi).company_id 
    Company.find(job_company_id) 
end 

回答

1

您可以使用#joinsJob加入Company,然後jobs.level_of_interest查詢。您的迭代可以用這樣的單個查詢替代

Company.joins(:jobs) 
     .where('jobs.level_of_interest in (?)', Job.level_count.keys[0..2]) 
#=> SELECT `companies`.* FROM `companies` INNER JOIN `jobs` ON `jobs`.`company_id` = `companies`.`id` WHERE (jobs.level_of_interest in (5, 3, 2)) 
1

你可以這樣做:

Company.joins(:jobs).where(jobs: { level_of_interest: [ array, of, loi, values] }).uniq 
+0

謝謝!仍然習慣了'.joins' –

+0

Yw,我總是需要在使用它們之前仔細檢查 –