2013-05-06 3 views
0

J'ai différentes classes dans mon application Grails pour lesquelles un utilisateur doit créer des commentaires. Par ex, Post, livre, articleQuelle est la meilleure façon de rendre les classes de domaine Grails commentables?

Réglage

static hasMany = [comments: Comment] 

à chaque classe semble être une mauvaise solution. Quel est le meilleur moyen de les rendre commentables? À quoi devrait ressembler une classe générique Comment?

+0

Pourquoi pensez-vous que c'est une mauvaise solution? – Nix

+0

Il semble que ce ne soit pas si élégant. Comment créer une classe Commentaire? – confile

+1

Il existe actuellement un [Plugin commentable] (http://grails.org/plugin/commentable) qui fonctionne très bien. – Kelly

Répondre

0

Vous pouvez utiliser Héritage ici.

Créer une classe de base qui ont ce paramètre

static hasMany = [comments: Comment] 

& laisser toutes les autres classes à savoir Post, livre, article, posséderai.

0

Le plus simple est de définir une interface commentable dans src/groovy et de laisser vos classes hériter de cette interface. Ceci est juste un codage java normal, mais vous permet de centraliser tout votre code lié aux commentaires, avec un peu de chance autour d'un service de grails. Si vous voulez vous faire plaisir, vous pouvez utiliser une annotation pour cela. Une fois que vous avez fait cela, vous pouvez déplacer ce code dans un plugin afin que vous puissiez l'utiliser dans différents projets.

+5

Bien sûr, et vous pouvez aussi appeler le plugin "commentable";) http://grails.org/plugin/commentable –

+1

oui, mais le scénario le plus courant que j'ai vu est celui des personnes utilisant facebook ou des commentaires disqus au lieu de tout construire en interne. Dans ce cas, les commentaires ne sont vraiment qu'un booléen. Cette solution convient aux deux cas d'utilisation. –

0

Pourquoi est-ce une mauvaise solution? Regarde exactement pour moi. Votre classe de domaine a en effet beaucoup de commentaires, non?

+0

La question est plutôt comment concevoir la classe Comment? – confile

+0

Indice: il [appartient à: YourOtherDomainClass] – Georgemc

0

Vous pouvez également créer une classe de base abstraite commentable, puis d'autres domaines peuvent être commentés. Vous pouvez maintenant créer une classe Comment avec belongsTo commentable. Vous pouvez également implémenter getComments dans la classe Commentable par simple Commentable.findAllBy (this). À mon avis, c'est aussi une bonne idée d'éviter les relations "hasMany".

Questions connexes