J'ai un contrôleur de poste qui a beaucoup de commentaires. Le modèle de message a un champ appelé has_comments qui est un booléen (donc je peux rapidement sélectionner dans la base de données uniquement les messages qui ont des commentaires). Pour créer un nouveau commentaire pour une publication, j'utilise l'action create
de mon contrôleur de commentaires. Après avoir créé le commentaire, je dois mettre à jour le champ has_comments de mon message et le définir sur true
.Où mettre un morceau de code dans Ruby on Rails?
Je peux mettre à jour ce champ de l'action create
de mon contrôleur de commentaires, mais cela ne semble pas correct - je pense que je devrais vraiment utiliser l'action update
du poste, mais je ne suis pas sûr que c'est bon d'appeler il (via send
?) à partir de l'action create du contrôleur de commentaires.
Où le code de mise à jour du poste devrait-il être? Merci!
Cela permettra également d'éviter les incohérences (par exemple dans le cas d'un commentaire supprimé), que vous auriez à considérer autrement – averell
D'accord. Utiliser une nouvelle colonne + callbacks est lourd et cassant pour ce qui devrait être une méthode simple. –
alors comment allez-vous sur la sélection de tous les messages qui ont un commentaire de la base de données sans aller chercher tous les messages, puis en comptant les commentaires pour chacun d'eux, puis en filtrant le résultat? C'est beaucoup plus de mémoire que de simplement changer une valeur dans une colonne. n'est-ce pas? –