Dans theme.rb, on trouve ChildTheme.where(parent_theme_id: theme_id).distinct.pluck(:child_theme_id), où l’appel à distinct peut être supprimé grâce à l’index unique ajouté dans discourse/db/migrate/20170313192741_add_themes.rb : add_index :child_themes, [:parent_theme_id, :child_theme_id], unique: true.
Cela signifie que pour deux childthemes : ChildTheme1(id1, child_theme_id1, parent_theme_id) et ChildTheme2(id2, child_theme_id2, parent_theme_id), si child_theme_id1 == child_theme_id2, alors id1 = id2, sinon [:parent_theme_id, :child_theme_id] ne serait pas unique. Par conséquent, ChildTheme.where(parent_theme_id: theme_id).pluck(:child_theme_id) retournera déjà des child_theme_id uniques, ce qui rend l’appel à distinct inutile. Nous pouvons donc le supprimer pour améliorer les performances.