Open emilianork opened 9 years ago
@isaacpompa Así es, no borra las comentarios de los usuarios cuando este se borra. Eso pasa por lo siguiente. Usamos la gema act_as_commentable
en ella cuando haces user.comments
en lugar de traer los comentarios que hizo el usuario, trae los comentarios que le hicieron al usuario, haciendo que el dependent: :destroy
no sirva.
Entiendo que (https://github.com/jackdempsey/acts_as_commentable) es la gema que se está utilizando para manejar el polimorfismo en el modelos Comment
?
Así es, no podemos quitar la gema del modelo, hay que buscar una solución. Por ejemplo yo me di cuenta que si primero ponemos has_many comments, :dependent :destroy
antes de act_as_commentable
el error no pasa, pero habría que hacer tests que comprueben si no rompen nada.
@babasbot comentaba el viernes que tal vez ya no valga la pena resolver este tipo de cosas por que se va a reescribir la plataforma. Creo que lo mejor es quitar la posibilidad de borrar usuarios del managers, por que deja muchas cosas inconsistentes. @babasbot que opinas?
En respuesta a tu comentario @emilianork. En todos los modelos (Network, User, Course) está primero has_many comments, :dependent :destroy
y después está act_as_commentable
.
Me doy cuenta que cuando uno pregunta por los comentarios de un usuario @user.comments
lanza este query SELECT "comments".* FROM "comments" WHERE "comments"."commentable_id" = 20 AND "comments"."commentable_type" = 'User' ORDER BY created_at ASC
Cuando debería ser:
SELECT "comments".* FROM "comments" WHERE "comments"."commentable_id" = 20
Sin la condición después del AND
@emilianork y también pasaría este mismo issue para cuando una red es eliminada. Sólo aquellos comentarios que tengan commentable_type = Network
se eliminarían de la tabla Comments
.
Tienes razón @isaacpompa, seguro de eso no nos hemos dado cuenta por el hecho de que los comentarios de una red borrada no aparecen en otra red. Haz revisado si este problema surge en otros modelos?
@emilianork por ahora sólo me he dado cuenta en el modelo de Networks
@emilianork te refieres a que no los borra de la base de datos?