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?

¿Fue útil?

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
scroll top