Для чего нужна опция :counter_sql?
:counter_sql
См. Здесь: rubyonrails association_basics . Найдите для :counter_sql на этой странице.
По :counter_sql вы можете указать свой собственный подсчет sql как :couter_sql=>"select * from table where user=#{user}". Если вы не укажете это, Rails автоматически генерирует правильный SQL для подсчета.
:couter_sql=>"select * from table where user=#{user}"
И я цитирую
Укажите полный оператор SQL для извлечения размера ассоциации. Если указано: finder_sql, но не указано: counter_sql, то: counter_sql будет генерируется заменой SELECT ... FROM with SELECT COUNT(*) FROM.
SELECT ... FROM with SELECT COUNT(*) FROM.
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html