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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs