У меня есть модельный плейлист и пользователь модели, оба из которых имеют друг друга друг от друга, через модель PlaylistUser.Как я могу эффективно заказывать загруженные записи?
В моих плейлистах # show action, я хочу распечатать список всех пользователей Playlist, а также первые два плейлиста (упорядоченные по: song_count), связанные с каждым из этих Пользователей. Чтобы сделать этот единственный запрос, я загрузил таблицу плейлистов вместе с пользователями.
Прямо сейчас вот что у меня есть:
плейлистам/show.html.erb
<% @playlist = Playlist.find(params[:id]) %>
<% @playlist_users = @playlist.users.includes(:playlists)
<% @playlist_users.each do |user| %>
<%= user.name %>
<%= user.playlists.order(:song_count).reverse.first.name %>
<%= user.playlists.order(:song_count).reverse.second.name %>
<% end %>
модели
class User < ActiveRecord::Base
has_many :playlist_users
has_many :playlists, :through => :playlist_users
end
class PlaylistUser < ActiveRecord::Base
belongs_to :playlist
belongs_to :user
end
class Playlist < ActiveRecord::Base
has_many :playlist_users
has_many :users, :through => :playlist_users
end
Когда я удалить заказ, запрос очень быстро. Но с заказом это очень медленно, потому что база данных, по-видимому, должна запрашивать каждый список воспроизведения, прежде чем он сможет их заказать.
Могу ли я заказать плейлисты в исходном запросе?