2017-10-20 9 views
0

J'ai des difficultés à combiner plusieurs clés étrangères sur un has_many. Je comprends que ce n'est pas l'intention expresse de la foreign_key sur un has_many. Mais peu importe, je cherche un moyen simple de combiner deux clés étrangères.Ralis Multiple foreign_key

J'ai essayé de combiner deux est comme les has_many si:

has_many :primary_clients, foreign_key: :coach_id, inverse_of: :coach do 
end 

has_many :secondary_clients, foreign_key: :coach_two_id, inverse_of: :coach do 
end 

def clients 
    Client.where("primary_clients = ? OR secondary_clients = ?", self.id, self.id) 
end 

Et j'ai aussi essayé unscope de redéfinir la portée:

has_many :clients, ->(user) { unscope(:where).where("coach_id = :id OR coach_two_id = :id", id: ids) }, inverse_of: :coach do 
end 

Je suis après quelque chose comme comme assez simple:

has_many :clients, foreign_key: {:coach_id, :coach_two_id}, inverse_of: :coach do 
end 

Des commentaires pour me diriger dans la bonne direction?

Répondre

0

pour une petite collection vous pouvez simplement faire

primary_clients | secondary_clients avec l'opérateur union|