[RUBY] Enregistrement actif, requêtes complexes

Lorsque j'écrirai une demande un peu compliquée avec Active Record, je l'ajouterai en mémo pour ne pas l'oublier.

Trier par le nombre d'enregistrements dans la table associée

class PLine < ApplicationRecord
  has_many :likes, dependent: :destroy
end

class Like < ApplicationRecord
  belongs_to :p_line
end
@p_lines = PLine.select('p_lines.*', 'count(likes.id) AS favs')
                .left_joins(:likes)
                .group('p_lines.id')
                .order('favs desc')
<% @p_lines.each do |p_line| %>
  <p><%= p_line.p_line %></p>
  <p><%= p_line.favs %> points</p>
<% end %>

Il existe plusieurs colonnes associées et la valeur de la variable correspond à l'une d'entre elles. Je souhaite inclure toutes les colonnes associées.

class Mc < ApplicationRecord
  has_many :videos
end

class Video < ApplicationRecord
  belongs_to :mc1, class_name: 'Mc'
  belongs_to :mc2, class_name: 'Mc'
end
@videos = Video.includes(:mc1, :mc2).where(mc1_id: @mc)
               .or(Video.includes(:mc1, :mc2).where(mc2_id: @mc))

Recommended Posts

Enregistrement actif, requêtes complexes
Qu'est-ce que Rails Active Record?
Méthodes fréquemment utilisées dans Active Record
[Ruby on Rails] À propos du rappel Active Record