Sistema de Karma

Buenas lista, les planteo lo que necesito y las posible soluciones que
yo
veo a ver que les parece o si me sugieren algo mejor.

Bien, tengo una aplicación con users y groups con una relación has_many
:throug fans (por ejemplo)

Bien, cada usuario puede subir fotos, noticias, votaciones comentarios a
cada grupo y quiero que para ciertas acciones se le sume o resten puntos
de
karma (ese es un campo de fans).

Además los controladores de fotos, noticias y votaciones pueden servir
para
otro tipo de cosas, no son específicas para groups, por ejemplo podría
crear
también otro controller por ejemplo albums al que se puedan añadir
fotos,
noticias y votaciones.

¿me seguís hasta aquí?

La soluciones que yo pensé fueron…

Crear callbacks en cada modelo fotos, noticias, votaciones y sumer o
resten
karma.
Crear un Active::record Observer.
A lo garrulo metiendolo en el controlador.

El último caso sería como último recurso :stuck_out_tongue:

En los dos primeros tengo el problema de que no se como distingur cuando
subo una foto a un grupo o a un album.

¿ideas?

2008/7/23 Ceritium [email protected]:

Crear callbacks en cada modelo fotos, noticias, votaciones y sumer o resten
karma.

Si todos tus objetos que dan puntos pudieran ser Generalizados en una
clase Base, yo iria por esto (segun veo no seria tu caso). Aca podrias
aplicar el callback en la clase padre y centralizado sin tanto codigo
repetido.

Crear un Active::record Observer.

Esta opcion creo que para tu caso es la mas DRY.

A lo garrulo metiendolo en el controlador.

Ni de broma :slight_smile:

En los dos primeros tengo el problema de que no se como distingur cuando
subo una foto a un grupo o a un album.

Primero que nada, por que querrias diferenciarlo?

¡Falta Uno! - http://www.falta-uno.com.ar/
Ricardo M.

Muchas gracias, pero al final use un sistema mucho mas simple, un metodo
para añadir o quitar karma en el aplication.rb y que se carga en los
controladores necesários, luego desde la accion se le llama
especificando
cuantos puntos se añaden o quitan.