El más fácil, pero podría ser limitado dependiendo de lo que quieras hacer.
Factible pero más complejo. Echa un vistazo a cómo TopicQuery implementa las listas
y específicamente
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
Puedes agregar una adicional con relativa facilidad, aunque hay bastantes partes móviles que debes tener en cuenta. Hice eso en mi plugin ‘homepage-filter’ y ese podría ser un buen punto de partida.