Rails способ подсчитать количество записей в моем случае - PullRequest
1 голос
/ 28 декабря 2011

Я использую Rails v2.3.2 .

У меня есть модель под названием UsersCar:

class UsersCar < ActiveRecord::Base
  belongs_to :car
  belongs_to :user
end

Это модель сопоставлена ​​с таблицей базы данных users_cars, которая содержит только два столбца: user_id, car_id.

Я хотел бы использовать Rails способ подсчетаномер car_id , где user_id=3.Я знаю простой SQL-запрос. Я могу добиться этого следующим образом:

SELECT COUNT(*) FROM users_cars WHERE user_id=3;

Теперь я хотел бы получить его Rails способом, я знаю, что могу сделать:

UsersCar.count()

но как я могу поместить предложение ...where user_id=3 в Rails ?

Ответы [ 4 ]

4 голосов
/ 28 декабря 2011

В соответствии с Руководствами по Ruby on Rails , вы можете передавать условия методу count().Например:

UsersCar.count(:conditions => ["user_id = ?", 3])

будет генерировать:

SELECT count(*) AS count_all FROM users_cars WHERE (user_id = 3)
2 голосов
/ 28 декабря 2011

Если у вас есть объект User, вы можете сделать

user.cars.size 

или

user.cars.count

Другим способом было бы сделать:

UserCar.find(:user_id => 3).size

И последний способ, о котором я могу подумать, - это упомянутый выше, то есть «UserCar.count (условия)».

1 голос
/ 28 декабря 2011

С , привязанным к ассоциации , вы получаете несколько «магических» методов для родительского элемента для ссылки на его дочерние элементы.

В вашем случае:

users_car = UsersCar.find(1) #=>one record of users_car with id = 1.
users_car.users              #=>a list of associated users.
users_car.users.count        #=>the amount of associated users.

Тем не менее, я думаю, что вы неправильно понимаете ассоциации, основываясь на том факте, что ваша UsersCar названа неуклюже.

Кажется, ты хочешь

  • Пользователь has_and_belongs_to_many: автомобили
  • Автомобиль has_and_belongs_to_manu: пользователи

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

0 голосов
/ 28 декабря 2011

Мне удалось найти способ считать с условием:

UsersCar.count(:condition=>"user_id=3")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...