Forum: Rails-ES duda foreign key

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Aebf4e72990aa0bbfcb782d65bf5200f?d=identicon&s=25 Miguel Angel Calleja Lázaro (Guest)
on 2007-03-09 10:22
(Received via mailing list)
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 ??
A6344ef7ef1e33e8efb34d99e6124490?d=identicon&s=25 Imobach González Sosa (Guest)
on 2007-03-09 10:53
(Received via mailing list)
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/
813a6b85334f28d45b156082cd0e7584?d=identicon&s=25 David Asorey Álvarez (Guest)
on 2007-03-09 10:54
(Received via mailing list)
> [...] 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_tabla...

Un saludo.
Aebf4e72990aa0bbfcb782d65bf5200f?d=identicon&s=25 Miguel Angel Calleja Lázaro (Guest)
on 2007-03-09 11:00
(Received via mailing list)
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
This topic is locked and can not be replied to.