IIC2143 / Syllabus

66 stars 2 forks source link

Asociacion entre Team y Match #62

Open MartinChaud opened 3 months ago

MartinChaud commented 3 months ago

Captura de pantalla 2024-03-22 201731

Llevo por lo menos desde el miércoles intentando lograr que la asociación entre teams y matches funcione. El último error que me ha surgido es cuando defino un team1 y team2 y luego defino un partido match1 entre los 2. Cuando intento ver los partidos del team1 usando la función team1.matches me tira este error. En la ayudantía del viernes el ayudante me dijo que mis asociaciones parecían estar bien, así que no se que puede ser.

TheExcel2 commented 3 months ago

Al momento de declarar las asociaciones tienes que dejar explícito cuáles son las fk. Si en el modelo Team solo pusiste has_many: matches, Rails por defecto buscará en la tabla matches un "team_id", tienes que sobreescribirlo para que busque en "teamA_id" y "teamB_id". Acá te dejan el ejemplo entre el modelo Meeting y User: https://medium.com/@lucashiago63/multiple-foreign-keys-for-the-same-model-in-rails-6-18ac4b7a7c6a

MartinChaud commented 3 months ago

Intente hacerlo tal cual aparece en link, pero ahora tengo este error:

3.1.0 :010 > team1.matches /home/martin/.rvm/gems/ruby-3.1.0/gems/activemodel-7.0.8.1/lib/active_model/attribute_methods.rb:450:in 'method_missing': undefined method 'matches' for #<Team id: 1, name: "Cobresal", stadium: "El Cobre", capacity: 11240, city: "El Salvador", created_at: "2024-03-24 04:44:03.011210000 +0000", updated_at: "2024-03-24 04:44:03.011210000 +0000"> (NoMethodError)

TheExcel2 commented 3 months ago

Cambiaste los nombre en el has_many: de Team, cierto? si lo hiciste como en el ejemplo deberías tener algo como:

 has_many :nombre1, class_name: 'Match', foreign_key: 'foreignKey_A'
 has_many :nombre2, class_name: 'Match', foreign_key: 'foreignKey_B'

En ese caso ya no tienes "matches", y ese es el error que te está dando (Asumo que estás intentando usar team.matches). Tendrías que llamarlos usando team.nombre1 y team.nombre2

MartinChaud commented 3 months ago

En efecto, logre llamarlos de la forma team.nombre1. ¿Pero luego como logro hacer un GET /teams/:team_id/matches? ¿Solo me aparecerían los matches de team.nombre1 o team.nombre2 o no?

TheExcel2 commented 3 months ago

Juntalos

00nrs commented 3 months ago

Hola! Yo tengo el mismo error, pero siguiendo los pasos del link, luego de hacer el rails db:migrate, el archivo schema.rb no se me actualiza ni se modifica nada... A que podría deberse?