Problema con relacion e tablas

Hola tengo un pequeño problema de relacion de tablas.
verán tengo dos tablas, “usuarios_artista” y “diseno_catalogo”

class DisenoCatalogo < ActiveRecord::Base
set_table_name ‘diseno_catalogo’
belongs_to :usuarios_artista , :foreign_key =>“quien_usr”
end

class UsuariosArtista < ActiveRecord::Base
has_many :diseno_catalogo
end

luego tengo una consulta sql en un controller
def index
@artistas_sobre_media = UsuariosArtista.find_by_sql("SELECT
vista_obras_usr.id_user AS id,
vista_obras_usr.nombre,Avg(vote.voteValue) AS promedio,
count(vote.voto_id) as votos_totales,
obras_total FROM vista_obras_usr
LEFT JOIN vote on (vista_obras_usr.id_user= vote.quien)
GROUP BY vista_obras_usr.id_user HAVING votos_totales >=
‘media_votos’
ORDER BY promedio DESC , votos_totales DESC ,
vista_obras_usr.obras_total DESC,
vista_obras_usr.nombre ASC ")
end

es un poco compleja por eso no me fui el .find()

luego en la vista tengo esto

<% for artistas in @artistas_sobre_media %>

<%= artistas.diseno_catalogo[0].fondo %>

<% end %>

el problema es que no se establece la relacion de tablas, pero el

sql
de @artistas_sobre_media funciona bien, pero cuando intento acceder a
algun
campo de diseno_catalogo, rails me arroja el siguiente error

Mysql::Error: Unknown column ‘diseno_catalogo.usuarios_artista_id’ in
‘where
clause’: SELECT * FROM diseno_catalogo WHERE
(diseno_catalogo.usuarios_artista_id = 613)

el error es bastante ovbio , rails esta buscando

‘usuarios_artista_id’
que es un campo que no existe, pero no se como decirle a rails que
busque en
ves de ‘usuarios_artista_id’ a ‘quien_usr’, pero como eso lo defini en
el
modelo ‘diseno-catalogo.rb’ no se que puede estar pasando.

espero que se entienda el problema

Saludos Cordiales

problema resuelto, como la llamada la estoy haciendo desde el otro
extremo de la relacion 1-n , en el modelo “usuarios artistas” cambie
esto

has_many :diseno_catalogo
por esto
has_many :diseno_catalogo, :foreign_key =>“quien_usr”

asi rails sabe que la clave foranea con la cual establece la relacion
n-1 es “quien_usr” en lugar de “usuarios_artista_id”

ademas en mi vista hice lo siguiente en el caso que hallan registros en
los cuales no se establesca relacion o no exista el registro

<% if artistas.diseno_catalogo[0].nil?%>
<%else%>
<%= artistas.diseno_catalogo[0].banner_img %>"
<%end%>

si alguien sabe de alguna forma mejor para esto , por favor que la
muestre.

pienso que se pueden declarar estas condiciones desde el mismo modelo o
desde el controller, pero no se me ocurre como

Saludos Cordiales

Miguel M. wrote:

Hola tengo un pequeño problema de relacion de tablas.
verán tengo dos tablas, “usuarios_artista” y “diseno_catalogo”

class DisenoCatalogo < ActiveRecord::Base
set_table_name ‘diseno_catalogo’
belongs_to :usuarios_artista , :foreign_key =>“quien_usr”
end

class UsuariosArtista < ActiveRecord::Base
has_many :diseno_catalogo
end

luego tengo una consulta sql en un controller
def index
@artistas_sobre_media = UsuariosArtista.find_by_sql("SELECT
vista_obras_usr.id_user AS id,
vista_obras_usr.nombre,Avg(vote.voteValue) AS promedio,
count(vote.voto_id) as votos_totales,
obras_total FROM vista_obras_usr
LEFT JOIN vote on (vista_obras_usr.id_user= vote.quien)
GROUP BY vista_obras_usr.id_user HAVING votos_totales >=
‘media_votos’
ORDER BY promedio DESC , votos_totales DESC ,
vista_obras_usr.obras_total DESC,
vista_obras_usr.nombre ASC ")
end

es un poco compleja por eso no me fui el .find()

luego en la vista tengo esto

<% for artistas in @artistas_sobre_media %>

<%= artistas.diseno_catalogo[0].fondo %>

<% end %>

el problema es que no se establece la relacion de tablas, pero el

sql
de @artistas_sobre_media funciona bien, pero cuando intento acceder a
algun
campo de diseno_catalogo, rails me arroja el siguiente error

Mysql::Error: Unknown column ‘diseno_catalogo.usuarios_artista_id’ in
‘where
clause’: SELECT * FROM diseno_catalogo WHERE
(diseno_catalogo.usuarios_artista_id = 613)

el error es bastante ovbio , rails esta buscando

‘usuarios_artista_id’
que es un campo que no existe, pero no se como decirle a rails que
busque en
ves de ‘usuarios_artista_id’ a ‘quien_usr’, pero como eso lo defini en
el
modelo ‘diseno-catalogo.rb’ no se que puede estar pasando.

espero que se entienda el problema

Saludos Cordiales