[RUBY] Active Record, komplexe Abfragen

Wenn ich eine etwas komplizierte Anfrage mit Active Record schreibe, füge ich sie als Memo hinzu, damit ich sie nicht vergesse.

Sortieren Sie nach der Anzahl der Datensätze in der zugehörigen Tabelle

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 %>

Es gibt mehrere verwandte Spalten, und der Wert der Variablen stimmt mit einer davon überein. Ich möchte alle zugehörigen Spalten einschließen.

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

Active Record, komplexe Abfragen
Was ist Rails Active Record?
Häufig verwendete Methoden in Active Record
[Ruby on Rails] Informationen zum Active Record-Rückruf