Las tablas son usuarios(id, nick, …), favoritismos(usuario_id,
favorito_id, …) y contenidos(titulo, usuario_id, created_at, …)
Definición de usuario (en el modelo):
has_many :favoritos, :through => :favoritismos, :class_name =>
‘Usuario’, :order => “nick”
has_many :contenidos, :order => “created_at desc”
Es decir, un usuario (yo) tiene contenidos y tiene usuarios favoritos.
El lÃo es para acceder a los contenidos de los usuarios favoritos desde
el controlador:
La forma lógica serÃa:
@contenidos = @usuario.favoritos.contenidos
Pero eso no funciona: “undefined method `contenidos’ for Usuario:Class”
A pesar de que sà funcionan
@usuario.favoritos
y
@usuario.contenidos
Igual el problema está en que falta en el modelo de usuarios el
“belongs_to favoritos” correspondiente, pero no sé cómo ponerlo…
Un segundo intento serÃa:
@contenidos = Contenido.find(:all, :order => ‘c.created_at desc’,
:conditions => “f.usuario_id = #{@usuario.id}”, :joins => “as c inner
join favoritismos as f on f.favorito_id = c.usuario_id” )
Y eso sà que devuelve los contenidos… pero si en la vista intentas
mostrar el autor del contenido:
contenido.usuario.nick
En vez de salir el nick del autor (mi usuario favorito), sale el nick
mÃo. Deduzco que como tanto la tabla contenidos como la tabla
favoritismos tienen un campo usuario_id, ruby se monta un lÃo…
Y asà estoy, sin saber cómo sacar esto. A ver si alguien me echa una
mano…