これを見たことはあるが、今は何も見つからない。特定の列でクエリをグループ化し、各グループにいくつあるかを表示できるようにします。私は最初の部分を書き留めました:
@line_items = @project.line_items.all(:group => "device_id")
これは広告申込情報のインデックスビュー用で、広告申込情報を表示する単なるテーブルです。広告申込情報がデバイスごとにグループ化されたので、「count」の表に列を作成するにはどうすればよいですか?
line_items
でcount
を実行すると、device_id
とcount
の順序付きハッシュが返されます。
@project.line_items.group(:device_id).count
キーおよび関連するレコード数としてのdevise_idのハッシュ
@project.line_items.group(:device_id).count
:select
オプションを追加するだけです:
@line_items = @project.line_items.all(
:group => "device_id",
:select => "device_id, COUNT(*) as count"
)
その後、各@line_item
にはcount
属性があります。
あなたもこれを試すことができると思います。
@project.line_items.group(:device_id).pluck("device_id, count(device_id)")
^^これは、要素 'device_id and count'を持つ配列の配列を提供します
何かのようなもの
User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")
うまくいくかもしれない...
カウントのみpluckの場合、ここではgroupよりも速くなります
@project.line_items.pluck(:device_id).count
@project.line_items.pluck(:device_id).uniq.count
このコミット後:
https://github.com/Rails/rails/commit/a1c05dd8b9bd3623289d3aa73dda2943d620cc34
同じことをする新しい方法があります:
@project.line_items.count(:group => LineItem.arel_table[:device_id])