es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ruby: referencia de migración representada en modelo.

Lo que tengo es lo siguiente:

Dos entidades: juegos y aplicaciones. Tienen una relación de aplicaciones a juegos:
– En la migración se presenta así: add_reference: :apps, :games, type: :uuid, foreign_key: true
– En el modelo de la aplicación, se presenta de la siguiente manera: belongs_to: game
– En el modelo de juego, se presenta de la siguiente manera: has_many: apps

En este momento, esto me permite tener una aplicación y asignarle un juego (en la base de datos muestra una nueva columna como game_id en la tabla de apps).

Lo que quiero hacer ahora es agregar una columna con otro juego llamado requested_game. Para hacer eso, agregué la siguiente migración: add_reference :apps, :requested_game, type: :uuid, foreign_key: {to_table: :games}, pero ahora no sé cómo mostrar esa relación en los modelos.

¿Alguna idea? ¿Tengo que crear un modelo de requested_game y referenciarlo al modelo de juego? Estoy un poco perdido ahora mismo…

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, necesitarás crear un modelo requested_game y hacer referencia a él desde el modelo game. En el modelo app, puedes agregar lo siguiente:

    belongs_to :game
    belongs_to :requested_game, class_name: 'Game'
    

    En el modelo game, puedes agregar lo siguiente:

    has_many :apps
    has_many :requested_games, class_name: 'App', foreign_key: 'requested_game_id'
    

Comments are closed.