2009-10-30 3 views
1

J'ai un modèle Commentaire dans mon application, mais je rencontre beaucoup de messages problématiques que je dois supprimer manuellement. Ce que je veux faire est d'ajouter une fonctionnalité "indicateur pour l'attention du modérateur" afin que les utilisateurs de l'application ont la possibilité de supprimer un commentaire sans avoir besoin de revoir tout le contenu de l'application.Comment implémenter une fonctionnalité "indicateur pour l'attention du modérateur" sur un modèle Commentaire dans une application Rails?

Je pense qu'après avoir marqué trois fois un commentaire, je le retirerai automatiquement de la vue, puis, lorsque j'aurai l'occasion d'examiner ces messages, je déciderai de les autoriser ou de les retirer définitivement de la vue.

Ce qui me pose problème, c'est la façon de l'implémenter.

Dois-je avoir une table distincte qui enregistre tous les éléments qui ont été marqués?

Ou devrais-je avoir un champ "nombre de drapeaux" dans le tableau des commentaires qui garde la trace du nombre de fois qu'un commentaire a été marqué? Un tableau séparé me permettrait de garder une trace des informations détaillées sur les actions de marquage - qui signale, de quelle IP ils signalent, etc. C'est ce que je penche vers.

Mais peut-être existe-t-il déjà une gemme ou un plugin qui fait ce genre de chose?

Répondre

1

Je ne connais aucun plugin. J'aime la solution que vous penchez vers.

Si vous souhaitez masquer le commentaire après que trois marquages ​​ont été créés, vous devez garder une trace de qui les a créés, afin que les utilisateurs ne puissent marquer qu'une seule fois.

Je crée une ressource flag (qui peut contenir tout type de drapeaux vos utilisateurs peuvent attribuer à un commentaire particulier), puis une ressource flagging qui relie flags avec comments et contient des informations sur l'entité qui est responsable de signalement (qui pourrait être un utilisateur ou un utilisateur représenté par IP).

Chaque comment aura alors beaucoup de flaggings.

Vous pouvez utiliser l'automate à états pour modifier l'état d'un commentaire sur "to_be_revised" ou quelque chose de similaire après l'ajout de trois drapeaux. La machine d'état (aasm_state_machine ou celle qui est maintenant incorporée directement dans Rails) vous fournira également named_scopes pour les groupes de commentaires ayant le même état. Après la révision, vous pouvez redéfinir l'état sur "publié" et supprimer tous les drapeaux ou "non publiables" et ainsi le masquer pour toujours.

Questions connexes