Le plus simple, mais potentiellement limité selon ce que vous voulez faire.
Faisable mais plus complexe. Jetez un œil à la manière dont TopicQuery implémente les listes
et spécifiquement
def list_hot
create_list(:hot, unordered: true, prioritize_pinned: true) do |topics|
topics = remove_muted(topics, user, options)
topics.joins("JOIN topic_hot_scores on topics.id = topic_hot_scores.topic_id").order(
"topic_hot_scores.score DESC",
)
end
end
Vous pouvez en ajouter une supplémentaire relativement facilement, bien qu’il y ait pas mal de pièces mobiles à prendre en compte. Je l’ai fait dans mon plugin ‘homepage-filter’ et cela pourrait être un bon point de départ.