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'])