2016-12-20 1 views
1

가 현재 나는이

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이 있는데, 그 카메라의 공유가 무엇인지 알 수 있습니다. camera_shares의 수를 계산하고 싶습니다. 예를 들어 ID가 12 인 카메라가 있고 camera_id = 12 인 숫자가 camera_shares 인 경우 총 수를 계산하고 싶습니다. 위에 표시된 것처럼 레일스 쿼리에서 그렇게하고 싶습니까? 그게 어떻게 가능합니까?

답변

-1

다소 단순합니다. @ camera에 대한 camera_shares의 수를 찾고 싶다고 가정 해 보겠습니다.

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

왜 하향 보입니까? 내 대답에 문제가 있으면 의견을 남기십시오. – EJ2015

+0

나는 내가 위에서 언급 한 방식으로 그것을 어떻게 할 수 있는지 안다. 하지만'join '을 사용하여 쿼리에서 원한다면 활성 레코드에서'count'를 사용하여 그 것을 얻을 수있는 방법을 찾고 있습니다 –

+0

당신은 Camera.joins (...)를 사용하여 그것을 원한다는 것을 의미합니까? 그것은 당신이 어떤 일을하든 관계없이 작동하지 않을 것입니다. 쿼리는 '카메라'를 선택하기 때문에 '카메라 _ 공유'가 아닙니다. – EJ2015