Skip to content

Latest commit

 

History

History
127 lines (102 loc) · 4.75 KB

File metadata and controls

127 lines (102 loc) · 4.75 KB

🌟 Sistema de Estrellas - Resumen de Cambios

Descripción General

Se ha reemplazado completamente el sistema de votos (upvote/downvote) por un sistema de estrellas más simple y directo.

Cambios Principales

1. Base de Datos

  • Tabla votosestrellas: Renombrada la tabla
  • Eliminada columna tipo: Ya no hay "arriba" o "abajo"
  • Agregada columna vistas en tabla pregunta: Para contar visualizaciones
  • Eliminada columna votos de tabla comentarios: Los comentarios ya no tienen votos

2. Modelos

  • Modelo Voto → Estrella: Renombrado y simplificado
  • Modelo Preguntum:
    • Métodos: total_estrellas(), tiene_estrella_de?(usuario), incrementar_vista!()
    • Relaciones: has_many :estrellas, has_many :usuarios_que_dieron_estrella
  • Modelo Usuario:
    • Métodos: total_estrellas_otorgadas(), total_estrellas_recibidas()
    • Relaciones: has_many :estrellas, has_many :preguntas_favoritas
  • Modelo Comentario: Eliminada toda lógica de votos

3. Controladores

  • PreguntaController:
    • Nuevo: toggle_estrella - Agregar/quitar estrella
    • Nuevo: quien_dio_estrella - Ver quién dio estrella (solo autor)
    • Nuevo: favoritos - Ver preguntas favoritas del usuario
    • Eliminado: votar_arriba, votar_abajo, procesar_voto
  • ComentariosController: Eliminadas acciones de votos
  • UsuariosController: Actualizado para mostrar estadísticas de estrellas

4. Rutas

# Nuevas rutas
post 'pregunta/:id/toggle_estrella'
get 'pregunta/:id/quien_dio_estrella'
get 'favoritos'

# Rutas eliminadas
patch 'pregunta/:id/votar_arriba'
patch 'pregunta/:id/votar_abajo'
patch 'comentarios/:id/votar_arriba'
patch 'comentarios/:id/votar_abajo'

5. Vistas

Menú Lateral

  • ✅ Agregado enlace "Favoritos" (solo para usuarios autenticados)

Index de Preguntas (pregunta/index.html.erb)

  • ✅ Muestra: ★ X estrellas y X vistas
  • ✅ Eliminados: Botones ▲ ▼

Show de Pregunta (pregunta/show.html.erb)

  • ✅ Botón: "☆ Dar Estrella" / "★ Quitar Estrella" (según estado)
  • ✅ Para el autor: Link para ver quiénes le dieron estrella
  • ✅ Contador de vistas incrementado automáticamente

Comentarios (comentarios/_comentario.html.erb)

  • ✅ Eliminados: Botones de votar y contador de votos
  • ✅ Mantenido: Sistema de respuestas anidadas

Nueva Vista: Favoritos (pregunta/favoritos.html.erb)

  • ✅ Lista de preguntas a las que el usuario dio estrella
  • ✅ Ordenadas por fecha de creación descendente

Nueva Vista: Quién Dio Estrella (pregunta/quien_dio_estrella.html.erb)

  • ✅ Solo visible para el autor de la pregunta
  • ✅ Muestra lista de usuarios con avatar y enlace a perfil
  • ✅ Contador total de estrellas

Perfil Usuario (usuarios/show.html.erb)

  • ✅ Estadísticas actualizadas:
    • ★ Estrellas otorgadas (total, sin mostrar a quién)
    • ★ Estrellas recibidas (total)
    • Preguntas realizadas
  • ✅ Cada pregunta muestra su total de estrellas

Reglas del Sistema

⭐ Estrellas en Preguntas

  1. ✅ Una persona solo puede dar UNA estrella por pregunta
  2. ✅ NO puedes dar estrella a tus propias preguntas
  3. ✅ Puedes quitar tu estrella haciendo clic nuevamente
  4. ✅ SOLO el autor puede ver quiénes le dieron estrella
  5. ✅ Todos pueden ver CUÁNTAS estrellas tiene una pregunta
  6. ✅ Todos pueden ver CUÁNTAS vistas tiene una pregunta (pero no quiénes)

💬 Comentarios

  1. ✅ Ya NO tienen sistema de votos
  2. ✅ Mantienen funcionalidad de respuestas anidadas
  3. ✅ Mantienen edición y eliminación por el autor

📊 Estadísticas Públicas del Perfil

  • ✅ Cuántas estrellas has OTORGADO (pero no a quién)
  • ✅ Cuántas estrellas has RECIBIDO (suma de todas tus preguntas)
  • ✅ Número de preguntas realizadas

🔒 Privacidad

  • ✅ Solo el AUTOR de la pregunta puede ver la lista completa de usuarios que le dieron estrella
  • ✅ Las vistas son públicas en número, pero NO se revela quiénes vieron
  • ✅ Las estadísticas de perfil muestran totales, NO detalles

Migración Ejecutada

rails db:migrate
# ✅ Migración 20260618041917_update_votos_to_estrellas.rb ejecutada exitosamente

Testing

  • ✅ Sin errores de diagnóstico
  • ✅ Base de datos actualizada correctamente
  • ✅ Todas las vistas renderizadas correctamente

Próximos Pasos Sugeridos (Opcional)

  1. Probar manualmente todas las funcionalidades
  2. Agregar índices a la tabla estrellas para mejorar rendimiento:
    • add_index :estrellas, [:usuario_id, :preguntum_id], unique: true
  3. Considerar agregar notificaciones cuando alguien da estrella
  4. Agregar ordenamiento por "más estrellas" en el index de preguntas

Fecha de implementación: 2026-06-18 Estado: ✅ Completado y funcional