Mysql 如何使用rails创建此查询?

Mysql 如何使用rails创建此查询?,mysql,ruby-on-rails,Mysql,Ruby On Rails,在rails中,如何在rails中创建以下查询?我知道如何用SQL编写它。我知道是否可以使用rails 以下代码: one_day_ago = 1.days.ago.at_beginning_of_day; Client.joins(:user => {:cart => [:cart_items, :saved_items]}).where('cart_items.created_at > ?', one_day_ago).group('clients.user_id') 上

在rails中,如何在rails中创建以下查询?我知道如何用SQL编写它。我知道是否可以使用rails

以下代码:

one_day_ago = 1.days.ago.at_beginning_of_day;
Client.joins(:user => {:cart => [:cart_items, :saved_items]}).where('cart_items.created_at > ?', one_day_ago).group('clients.user_id')
上面的代码创建以下查询:

SELECT `clients`.* FROM `clients` 
INNER JOIN `users` ON `users`.`id` = `clients`.`user_id` 
INNER JOIN `carts` ON `carts`.`user_id` = `users`.`id` 
INNER JOIN `cart_items` ON `cart_items`.`cart_id` = `carts`.`id` 
AND `cart_items`.`type` IN ('CartItem') 
INNER JOIN `cart_items` `saved_items_carts` ON `saved_items_carts`.`cart_id` = `carts`.`id` 
AND `saved_items_carts`.`type` IN ('SavedItem')
WHERE (cart_items.created_at > '2019-03-31 04:00:00.000000') GROUP BY clients.user_id
如何让rails创建如下查询:

选择clients.*FROM clients internal JOIN users ON users.id=clients.user\u id carts.user\u id=users.id上的内部联接carts 内部加入购物车上的购物车项目。购物车id=购物车id 其中cart_items.created_位于“2019-03-31 04:00:00.000000”
和cart_items。键入“SavedItem”,按客户端分组“CartItem”。用户id

我不太清楚为什么您希望第二部分包含OR,但您可以根据需要编写联接查询:

Client.joins(user: { cart: [:cart_items] }).joins("INNER JOIN cart_items saved_cart_items ON saved_cart_items.cart_id = carts.id OR saved_cart_items.type IN ('SavedItem')").where('cart_items.created_at > ?', one_day_ago).group('clients.user_id')
查看此更新的查询是否提供了所需的输出:

Client
.joins(:user, :cart)
.joins('INNER JOIN cart_items ON cart_items.id = carts.id')
.where('cart_items.created_at > ?', one_day_ago)
.where(cart_items: { type: ['SavedItem', 'CartItem'] })
.group('clients.user_id')

很抱歉,我已将代码更新为我试图实现的查询。