Duda foreign key


#1

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 ??


#2

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: http://www.banot.net/~osoh/
blog: http://devnull.blogs.banot.net/


#3

[…] 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.


#4

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