Estoy ejecutando un foro de noticias y discusión política en Discourse. El problema que observo es que la clasificación predeterminada que ofrece Discourse genera un caos total para mi caso de uso, ya que la antigüedad de los temas es muy importante. Para un foro como el mío, una clasificación al estilo de Reddit tiene más sentido; sin embargo, entiendo que no hay una manera directa de lograrlo.
Me pregunto si es posible (ab)usar de bumped_at para lograr una clasificación al estilo de Reddit haciendo algo como:
def topic_hotness(created_at, like_count)
/**
Esta función traduce created_at y like_count
en una fecha bumped_at utilizando una fórmula matemática
similar a la que usa Reddit. Considera bumped_at
como una fecha hasta la cual necesitamos que el tema esté en el top 10
dada su fecha de creación y el número de "me gusta".
*/
end
add_model_callback(Topic, :before_save) do
self.bumped_at = topic_hotness(self.created_at, self.like_count)
end
¿Esto va a funcionar? ¿Y qué características podrían romperse y necesitarían ser abordadas? Vi en algún lugar de la base de código de Discourse que se lanza una excepción si bumped_at está en el futuro. Dependiendo de la fórmula, usar este esquema puede resultar en fechas bumped_at en el futuro. ¿Alguna opinión?
Desafortunadamente, no hay nada comparable a la calidad de Discourse en el mercado, por lo que Discourse es mi única opción. De hecho, Discourse hace casi todo lo necesario para ese caso de uso; lo único que falta es la clasificación en la página de inicio. He visto solicitudes similares en el pasado (aunque solo unas pocas), así que quizás esto ayude a más personas en el futuro.
Pero estamos estrictamente comprometidos con el orden cronológico en las conversaciones y solo contamos con una fina capa de hilos. ¿Quizás podrías echar un vistado al plugin Solved?
Jaja. Puedo decirlo porque estoy obteniendo una muy buena respuesta de mi comunidad. Los clones de Reddit que hay por ahí ni siquiera valen la pena intentar.
No estoy seguro de entender cómo se relaciona el plugin Solved con este problema. ¿Afecta a la fecha de reactivación (bump)?
Esto tiene sus propios problemas: la línea de tiempo debe tener desplazamiento infinito para mantener al usuario comprometido. La mayoría de mis usuarios se irán en lugar de navegar hacia las categorías.
Creo que lo que haré a continuación es experimentar en el entorno de desarrollo para ver qué problemas encontraré si anulo bumped_at y determinar si puedo aceptar esos inconvenientes como compensaciones. Aún no he revisado el código, pero parece que el marcador de última visita se volverá loco, así que tendré que suprimirlo. Además, creo que la sección “temas nuevos o actualizados” se arruinará, por lo que eso también podría requerir algunas anulaciones o supresiones.
Compartiré mi experiencia en este hilo por si a alguien más le interesa. Háganme saber si se les ocurren, de inmediato, otros problemas que esto pueda causar.