私のモデルは次のとおりです。
service_provider has_many question、質問はservice_providerに属しています
Activeadmin で、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
サービスプロバイダーのインデックスを作成すると、すべて問題ないように見えます。しかし、質問数で注文すると、次のエラーが表示されます。
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" desc で ORDER BY しようとします。実際、彼は "questions_count" desc で ORDER BY する必要があります。
注文ステートメントで正しいフィールド名を使用するように彼に伝えるにはどうすればよいですか?