#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
объектов, которые связаны хотя бы с одним пользователем