以下のようなクラスがあったとする。
class Post < ApplicationRecord
has_many :comments
end
class Comment < ApplicationRecord
belongs_to :post
end
以下のようなransacker
をPost(親側)に追記する。
ransacker :comment_count do
query = <<-SQL
(SELECT
COUNT(comments.post_id)
FROM
comments
WHERE
comments.post_id = posts.id
GROUP BY
comments.post_id)
SQL
Arel.sql(query)
end
あとはview側で通常のソートと同じように実装する。
<th><%= sort_link(@q, :comment_count) %></th>