Relaciones Multiples

Hola a todos, mi problema es el siguiente:

  • tengo una tabla “alquiler” (id_alquiler, id_socio,id_empleado)
  • La clave primaria de la tabla “alquiler” es id_alquiler
  • Los campos id_socio,id_empleado son FK (Claves foraneas) de una tabla
    “users”

Mi modelo de alquiler es el siguiente:
class Alquiler < ActiveRecord::Base
set_primary_key “id_alquiler”
belongs_to :user, :foreign_key => “id_socio”
belongs_to :user, :foreign_key => “id_empleado”
end

Hasta ahi funcion de maravilla… Tengo mi vista que funcion bien.

Mi problema es el sgte: al querer listar todos los alquileres
<% for alquiler in @alquileres %>
<%= alquiler.copia.pelicula.titulo %>
<%= alquiler.copia.codigo %>
<%= alquiler.user.apellido %>, <%= alquiler.user.nombre %>
<% end %>

Imprime todos los datos del alquiler muy bien, pero la tercera linea
imprime solo el nombre y apellido del empleado… quisiera saber como
haria para imprimir tb el nombre y apellido del socio…

Desde ya gracias x el tiempo…

On Feb 1, 2008, at 4:39 AM, Santiago Y. wrote:

Mi modelo de alquiler es el siguiente:
class Alquiler < ActiveRecord::Base
set_primary_key “id_alquiler”
belongs_to :user, :foreign_key => “id_socio”
belongs_to :user, :foreign_key => “id_empleado”
end

No es posible, debes usar un nombre de relacion distinto para cada uno:

 # untested
 belongs_to :socio, :class_name => 'User', :foreign_key =>

‘id_socio’
belongs_to :empleado, :class_name => ‘User’, :foreign_key =>
‘id_empleado’

Con ello podras acceder a cada uno por separado:

 alquiler.socio.apellido
 alquiler.empleado.apellido

Aunque solo hubiera uno de ellos, el nombre de las relaciones aporta
mas informacion que “user”, es mejor a un alquiler preguntarle por su
“socio” que por su “user”.

– fxn

Santiago Y. escribió:

end
Imprime todos los datos del alquiler muy bien, pero la tercera linea
imprime solo el nombre y apellido del empleado… quisiera saber como
haria para imprimir tb el nombre y apellido del socio…

Desde ya gracias x el tiempo…


Ror-es mailing list
[email protected]
simplelogica.net

Hola,

Creo que para poder hacerlo tendrías que modificar la clase Alquiler de
la siguiente forma:

Como es ahora:

class Alquiler < ActiveRecord::Base
set_primary_key "id_alquiler"
    belongs_to :user, :foreign_key => "id_socio"
    belongs_to :user, :foreign_key => "id_empleado"
end

Una idea de como podría ser:

class Alquiler < ActiveRecord::Base
    set_primary_key "id_alquiler"
    belongs_to :socio,
        :class_name => "User",
        :foreign_key => "id_socio"
    belongs_to :empleado,
        :class_name => "User",
        :foreign_key => "id_empleado"
end

De esta forma podrías acceder tal que:

- alquiler.copia.socio
- alquiler.copia.empleado

Un saludo

Buenas de nuevo,

Donde puse

    - alquiler.copia.socio
    - alquiler.copia.empleado

Quise poner

    - alquiler.socio
    - alquiler.empleado

Saludos

Alberto Bajo escribió:

Gracias, ya lo solucione…