주문

2012-10-18 9 views
0

내 모델은 다음과 같습니다주문

SERVICE_PROVIDER의 has_many 질문, ActiveAdmin을에서 SERVICE_PROVIDER

belongs_to 질문을, 인덱스 i 내 service_providers하려는 그들의 questions_count별로 정렬.

그래서, 필드를 얻기 위해, 난 정렬, 나는이처럼 내 default_scope을 정의 할 수 있습니다

scope "all", :default => true do |sp| 
    sp.joins("LEFT JOIN questions on questions.service_provider_id = service_providers.id") 
    .select("service_providers.*, COUNT(service_provider_id) as questions_count") 
    .group("service_providers.id") 
end 

내 열 정의가 보이는 같은 :

column :questions, :sortable => "questions_count" do |sp| 
    sp.questions_count 
end 

내 serviceproviders 색인, 모든 좋아 보인다. 나는 그들의 questions_count에 의해 데르 때, 나는 다음과 같은 오류가 발생합니다 :

SQLite3::SQLException: no such column: service_providers.questions_count: SELECT service_providers.*, COUNT(service_provider_id) as questions_count FROM "service_providers" LEFT JOIN questions on questions.service_provider_id = service_providers.id GROUP BY service_providers.id ORDER BY "service_providers"."questions_count" desc LIMIT 30 OFFSET 0 

그래서 그는 "service_providers"에 의해 주문하는 시도 "questions_count"내림차순.. 사실, 그는 주문 "questions_count"desc합니다.

모든 제안, 어떻게 그에게 그의 주문 진술에 맞는 fieldname을 사용하도록 말할 수 있습니까?

답변

0
.order("COUNT(service_provider_id)") 

하거나

.order("questions_count") 
+0

해야한다는 불행하게도 ActiveAdmin을 보석을 건드리지 않고, 내가 코드 느릅 나무에 액세스 할 수없는 내 .order를 (생성) 범위의 경우 : sortable 옵션이 열에 대해 설정됩니다. – roman

0

이 잘

ServiceProvider.joins(:questions).group("service_providers.id").order("count(service_providers.id) DESC")