Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何列出一个表的记录,以及通过关系使用多少记录的计数器_Postgresql_Ruby On Rails 4_Activerecord_Postgresql 9.1_Rails Postgresql - Fatal编程技术网

Postgresql 如何列出一个表的记录,以及通过关系使用多少记录的计数器

Postgresql 如何列出一个表的记录,以及通过关系使用多少记录的计数器,postgresql,ruby-on-rails-4,activerecord,postgresql-9.1,rails-postgresql,Postgresql,Ruby On Rails 4,Activerecord,Postgresql 9.1,Rails Postgresql,我有两张桌子: create_table "instruments", force: :cascade do |t| t.string "name" ... create_table "user_instruments", force: :cascade do |t| t.integer "user_id" t.integer "instrument_id" ... 通过这些关系: class Instrument < ActiveR

我有两张桌子:

create_table "instruments", force: :cascade do |t|
    t.string   "name"
    ...

  create_table "user_instruments", force: :cascade do |t|
    t.integer  "user_id"
    t.integer  "instrument_id"
    ...
通过这些关系:

class Instrument < ActiveRecord::Base

  has_many :user_instruments
  has_many :users, :through => :user_instruments

class UserInstrument < ActiveRecord::Base

  belongs_to :user
  belongs_to :instrument
class工具:用户\u仪器
类UserInstrument
如何使用计数器查询所有仪器的使用次数,如:

仪器。选择('name,User\u Instrument.group(:Instrument\u id.count')。全部

或者可能:

UserInstrument.includes(:instruments).group('instrument\u id as count')。选择('instrument.name,count')

这在视图级别起作用,但会创建太多查询:

<% @instruments.each_with_index do |instrument,idx| %>
      ...
    <td><%= instrument.users.count %></td>
      ...
<%end%>

...
...
如何使用1个查询实现这一点


谢谢

如果您只想显示count,那么您可以使用
到一个
方法将其转换为数组,然后对其调用count方法

# Controller
@instruments = Instrument.all.eager_load(:users)

# View
<% @instruments.each do |instrument| %>
  <td><%= instrument.users.to_a.count %></td>
<% end %>
#控制器
@instruments=Instrument.all.eager\u加载(:用户)
#看法