has_many, belongs_to asociación donde has_many modelo asociado tiene dos alias fk en belongs_to associated_model
-
28-09-2019 - |
Pregunta
Tengo un modelo de usuario que tiene muchas peleas. Lucha pertenece al usuario.
Hay dos claves externas de la tabla lucha que volver referencia al usuario PK -. Challenger_id y challengee_id
El truco es ¿Cómo escribo la asociación has_many en el modelo de usuario para que vuelva peleas donde user_id = challenger_id o challengee_id?
Solución
Creo que puedes usar dos asociaciones separadas y crear un método para devolver todas las peleas. ¿No es posible que algún día tendrá que obtener sólo el fights
donde algunos @user
fue el challenger
?
Me haría esto como el siguiente:
class User < ActiveRecord::Base
has_many :fights_as_challenger, :foreign_key => :challenger_id,
:class_name => "Fight"
has_many :fights_as_challengee, :foreign_key => :challengee_id,
:class_name => "Fight"
def all_fights
self.fights_as_challenger + self.fights_as_challengee
end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow