has_many, belongs_to associazione dove has_many modello associato ha due alias fk in belongs_to associated_model
-
28-09-2019 - |
Domanda
Ho un modello User che ha molti combattimenti. Lotta appartiene a utente.
Ci sono due chiavi esterne della tabella lotta che di nuovo riferimento alla PK utente -. Challenger_id e challengee_id
Il trucco è come faccio a scrivere l'associazione has_many sul modello utente in modo che restituisca combattimenti in cui user_id = challenger_id o challengee_id?
Soluzione
Credo che si dovrebbe usare due associazioni separate e creare un metodo per restituire tutti i combattimenti. Non è possibile che un giorno avrete bisogno di ottenere solo il fights
dove alcuni @user
era il challenger
?
mi piacerebbe fare questo come il seguente:
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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow