ruby-on-rails - 您如何使用 where 子句执行 Rails 3 select IN

标签 ruby-on-rails ruby-on-rails-3 where-clause

我正在使用 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/

相关文章:

java - 在Where子句中插入字符串变量

java new array where object value true, mysql 'where' 数组语法

sql - rails ActiveRecord find_by_sql 调用结果的列顺序

ruby-on-rails - 带参数的事件模型序列化器?

ruby-on-rails - rails ActiveRecord : scope incoherence

ruby-on-rails - Rails 自定义 submit_tag

mysql - Rails 3 ActiveRecord 从单个表中选择父子递归

MySQL LEFT JOIN NULL 值

ruby-on-rails - Rails 如何解析模型属性,因为它们未在模型中定义?

ruby-on-rails - OAuth 安装 - 如何创建跨请求持续存在的 session ?