Поиск количества моделей с определенным атрибутом

#ruby-on-rails #ruby #orm

#ruby-on-rails #ruby #orm

Вопрос:

Привет, у меня есть модель в моей базе данных User, у пользователя может быть ноль, одна или много машин. Я хочу найти всех пользователей в моей базе данных с одним или несколькими автомобилями. На данный момент у меня есть логика, которая гласит:

 @car_user_count
for user in Users.all do

    if user.cars.count > 0 
        @car_user_count = @car_user_count   1

end
  

Это кажется слишком сложным способом сделать это. Я предполагаю, что должен быть способ сделать что-то вроде:

 User.where(Cars.count > 0).all.count
  

но, похоже, я просто не могу заставить это работать, любая помощь в этом была бы очень признательна.

Ответ №1:

Я хочу найти всех пользователей в моей базе данных с одним или несколькими автомобилями.

 User.includes(:cars).where.not(cars: { id: nil })
  

Ответ №2:

Для вашего примера попробуйте joins с count :

 User.joins(:cars).distinct.count
  

Комментарии:

1. Это неправильно в том смысле, что оно вернет не количество User объектов, а количество Car объектов, которые связаны хотя бы с одним пользователем