一个按顺序列出歌曲最多的艺术家的机构

时间:2017-11-29 14:27:12

标签: ruby-on-rails

我在rails程序上创建了一个包含两个数据库的ruby

父表

CreateArtists < ActiveRecord::Migration
   def change
    create_table :artists do |t|
    t.string :name, null: false
    t.integer :age, null: false

    t.string :nationality, null: false

    t.timestamps null: false
   end
  end
end

儿童表

CreateSingles < ActiveRecord::Migration
    def change
     create_table :singles do |t|
     t.belongs_to :artist, index: true, foreign_key: true
     t.string :title, null: false
     t.integer :year, null: false

     t.timestamps null: false
     end
   end
  end`

目前我正在展示艺术家,但希望他们按照歌曲最多的人的顺序排列

<thead>
<tr>
  <th>Name</th>
  <th>Age</th>
  <th>Nationality</th>
</tr>
</thead>

<tbody>
 <% @artists.each do |artist| %>
  <tr>
    <td><%= artist.name %></td>
    <td><%= artist.age %></td>
    <td><%= artist.nationality %></td>
  </tr>
<% end %>
</tbody>
</table>

我知道我可以使用计数器缓存来确定哪个艺术家的歌曲最多,但我想使用查询

我知道我需要改变

@artists.each do |artist|

有什么想法吗?

这也是我第一次在堆栈溢出时发布,所以为布局道歉

1 个答案:

答案 0 :(得分:1)

您可以尝试:

Artist.joins(:singles)
      .group(:id)
      .order('count(artists.id) DESC')