Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
¿Hacer referencia al mismo modelo dos veces en Rails con una entidad simple?

Tengo la entidad Envío que hace referencia a la entidad Dirección dos veces, por ejemplo:

ingrese la descripción de la imagen aquí

y el modelo de envío es el siguiente perteneciente dos veces a la entidad de dirección (address_from, address_to):

 class Shipment < ApplicationRecord belongs_to :address_from, :class_name => 'Address' belongs_to :address_to, :class_name => 'Address' end

pero no tengo muy claro como se vería al otro lado del modelo de relación

 class Address < ApplicationRecord has_one :shipment end

Si fuera una relación entre envío y dirección sería la siguiente:

 rails g model Address rails g model Shipment address:references

pero no tengo muy claro como relacionarlos dos veces en este caso

Cualquier consejo sería muy apreciado, gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En realidad, no puede usar una sola asociación aquí, ya que ActiveRecord no admite asociaciones en las que la clave externa podría estar en una de dos columnas. Cada has_one / has_many corresponde a una sola columna de clave externa en el lado inverso.

En su lugar, necesita una asociación en Dirección para cada clave externa en Envío:

 class Shipment < ApplicationRecord belongs_to :address_from, class_name: 'Address', inverse_of: :outgoing_shipments belongs_to :address_to, class_name: 'Address', inverse_of: :incoming_shipments end class Address < ApplicationRecord has_many :outgoing_shipments, class_name: 'Shipment', foreign_key: :address_from_id, inverse_of: :address_from has_many :incoming_shipments, class_name: 'Shipment', foreign_key: :address_to_id, inverse_of: :address_to end

Si bien podría usar has_one aquí, debe tener en cuenta que no hay nada que impida que una dirección tenga múltiples shipments.address_from_id a menos que agregue restricciones de exclusividad en shippings.address_from_id y shipments.address_to_id y validaciones. Sin embargo, no estoy seguro de por qué querrías esto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda