Voy a hacer mi primera relación en una tabla:
Mis dos tablas: paginas y destacados
Paginas: id, nombre_pagina
Destacados: id, nombre_destacado, pagina_id
La
relación:PAGINAS----1:N---->DESTACADOS
Es decir, en una página puede haber varios destacados.
Bien, tengo mis modelos: Pagina y Destacado
Mi modelo Pagina pondría:
belongs_to :destacado
Mi duda es si con sólo poner pagina_id en la tabla destacados lo
reconoce como la foreign key o hay que establecerla en el modelo
Destacado poniendo :foreign_key=>:pagina_id ??
El Friday 09 March 2007 09:21:24 Miguel Angel Calleja Lázaro
escribió:> Voy a hacer mi primera relación en una tabla:
Mis dos tablas: paginas y destacados
Paginas: id, nombre_pagina
Destacados: id, nombre_destacado, pagina_id
Una observación: ¿por qué llamas “nombre_pagina” y “nombre_destacado” a esos
campos? ¿No bastaría con llamarlos “nombre” a ambos? Al fin y al cabo,
cada
uno está en una tabla diferente. Es como si a una tabla “persona” le
pusiéramos: edad_persona, nombre_persona, sexo_persona… Pero vamos, es
una
cuestión de gustos (y redundancia).
reconoce como la foreign key o hay que establecerla en el modelo
Destacado poniendo :foreign_key=>:pagina_id ??
Sería más bien:
class Pagina
has_many :destacados
end
class Destacado
belongs_to :pagina
end
Leyendo el código: una página tiene muchos destacados; un destacado pertenece
a una página.
Rails supone que la clave ajena está en la tabla que corresponde a la
clase
que tiene el “belongs_to” y que su nombre se forma añadiendo “_id” al
nombre
de la relación (pagina_id). La opción :foreign_key sólo tienes que usarla si
vas a saltarte la
convención.
Saludos.
–
Imobach González Sosa
correo-e: imobachgs en banot punto net
jabber id: osoh en jabberes punto org
web: banot.net
blog: http://devnull.blogs.banot.net/
[…] Mi duda es si con sólo poner pagina_id en la tabla destacados
lo reconoce como la foreign key o hay que establecerla […]
Encontré ayer un pdf donde explican estas cosas muy bien:
http://www.cuadernorojo.com/files/relaciones_tablas_rubyonrails.pdf
Un saludo.
Imobach González Sosa
escribió:
Una observación: ¿por qué llamas “nombre_pagina” y “nombre_destacado” a esos
Leyendo el código: una página tiene muchos destacados; un destacado pertenece
a una página.
Rails supone que la clave ajena está en la tabla que corresponde a la clase
que tiene el “belongs_to” y que su nombre se forma añadiendo “_id” al nombre
de la relación (pagina_id). La opción :foreign_key sólo tienes que usarla si
vas a saltarte la convención.
Saludos.
Ah ok, muchísimas gracias, me ha quedado ya claro