2016-12-20 2 views
1

В настоящее время я делаю это, чтобы получить данные из моих таблиц вполучение подсчет еще табличных значений в существующем запросе Rails

cameras = Camera.joins("left JOIN users on cameras.owner_id = users.id") 
       .joins("left JOIN vendor_models vm on cameras.model_id = vm.id") 
       .joins("left JOIN vendors v on vm.vendor_id = v.id") 
       .where(condition).order(sorting(col_for_order, order_for)).decorate 

И это порождает такой запрос, как

SELECT "cameras".* FROM "cameras" left JOIN users on cameras.owner_id = users.id left JOIN vendor_models vm on cameras.model_id = vm.id left JOIN vendors v on vm.vendor_id = v.id 

У меня есть другой стол, как camera_shares, на котором у меня есть отношение стола камеры, так как есть camera_id, который присутствует в таблице camera_shares, а также в каждом camera_shares есть camera_id, которые сообщают нам, что доля для камеры, I хотите рассчитать подсчет camera_shares, например, если есть камера с идентификатором 12 и есть также 20 camera_shares с camera_id = 12, то я хочу посчитать его количество. Я хочу сделать это в Rails-запросе, как я показал выше? Как это можно сделать?

ответ

-1

Кажется довольно простым. Предположим, вы хотите найти номер камеры_shares для @camera:

CameraShare.where(camera: @camera).count 
+0

Почему нижняя сторона? Пожалуйста, не стесняйтесь оставлять комментарий, если что-то не так с моим ответом. – EJ2015

+0

Я знаю, как я могу это сделать так, как вы упомянули выше. НО я хочу в запросе с 'joins', я ищу способ, которым я могу использовать' count' в активных записях, чтобы получить это –

+0

Вы имели в виду, что хотите использовать Camera.joins (...) для этого? Это не сработает, независимо от того, к чему вы присоединяетесь. Поскольку запрос будет выбирать «камеры», а не «camera_shares». – EJ2015

Смежные вопросы