我正在使用 Rails 3,我需要做一个选择,其中记录的主键在结果前一个选择中。您可以使用使用 IN 的直接 SQL 轻松完成此操作。这是我完成我需要的明显不正确的方式。 Rails 有什么方法可以很好地做到这一点:
@task = Link.find(params[:id])
clients = Client.where('task_id = ?',@task.id).select('DISTINCT(company_id)')
company_list = []
clients.each do |client|
company_ids << client.company_id
end
@companies = Company.where(:id => company_ids)
最佳答案
正如其他人提到的,在这种情况下我会使用 join 。使用“in”的语法也很简单,例如
company_ids = [1,2,3,4]
@companies = Company.where("id in (?)", company_ids)
更新
实际上它比现在更简单(我认为rails 3+),你可以做
company_ids = [1,2,3,4]
@companies = Company.where(id: company_ids)
关于ruby-on-rails - 您如何使用 where 子句执行 Rails 3 select IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260288/