Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails activerecord存在子查询_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails activerecord存在子查询

Ruby on rails activerecord存在子查询,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有以下两种型号: class Client < ActiveRecord::Base has_many :orders end class Order < ActiveRecord::Base belongs_to :client end 有什么办法可以用rails的方式来做吗?下面的代码将提供满意的客户机,但client.orders仅返回指定的订单 clients.includes(:orders).where(orders: { id: ['order_1', '

我有以下两种型号:

class Client < ActiveRecord::Base
  has_many :orders
end

class Order < ActiveRecord::Base
  belongs_to :client
end
有什么办法可以用rails的方式来做吗?下面的代码将提供满意的客户机,但client.orders仅返回指定的订单

clients.includes(:orders).where(orders: { id: ['order_1', 'order_2'] })

我不知道如何在一次查询中获得所有信息

我知道这是几年后的事了,但下面是如何做到这一点(基于)


一块存在于此的宝石:(我是作者)

有了它,您可以通过以下方式做您想做的事情:

clients.includes(:orders).where_assoc_exists(:orders, id: ['order_1', 'order_2'])
在没有宝石的情况下做这件事很容易出错或产生恼人的副作用,比如你提到的没有所有记录的情况。这是一份关于这个问题的完整文件

阅读更多的文章。这是一个和

Order.where(client_id:
  Client.joins(:orders)
    .where(orders: {id: ['order_1', 'order_2']})
    .select(:id)
)
clients.includes(:orders).where_assoc_exists(:orders, id: ['order_1', 'order_2'])