例
class User
has_many :tickets
end
ユーザーのカウントチケットのロジックを含む関連付けを作成し、インクルードで使用したい (user has_one ticket_count)
Users.includes(:tickets_count)
私は試した
has_one :tickets_count, :select => "COUNT(*) as tickets_count,tickets.user_id " ,:class_name => 'Ticket', :group => "tickets.user_id", :readonly => true
User.includes(:tickets_count)
ArgumentError: Unknown key: group
この場合、インクルードの関連付けクエリは、count を group by で使用する必要があります ... Rails を使用してこれを実装するにはどうすればよいですか?
アップデート
- テーブル構造を変更できない
- インクルードを持つユーザーのコレクションに対して AR が 1 クエリを生成するようにしたい
Update2
私はSQLを知っており、これを結合で選択する方法を知っていますが、私の質問は「データを取得する方法」のようなものです。私の質問は、インクルードで使用できる関連付けの構築についてです。ありがとう
Update3 ユーザー has_one ticket_count のように作成したアソシエーションを作成しようとしましたが、
- has_one は関連拡張機能をサポートしていないようです
- has_one は :group オプションをサポートしていません
- has_one は finder_sql をサポートしていません