1

我有一個用戶模型,它有許多戰鬥。撲滅屬於用戶。has_many,belongs_to association has_many關聯模型在belongs_to中有兩個別名fk associated_model

戰鬥表中有兩個外鍵引用用戶PK - challenger_id和challengee_id。

訣竅是如何在用戶模型上編寫has_many關聯,以便返回其中user_id = challenger_id或challengee_id的戰鬥?

+0

想這是比想象的簡單:的has_many:打架,:foreign_key => 'challenger_id或challengee_id' – keruilin 2010-06-19 10:58:03

回答

1

我相信你應該使用兩個分離的關聯並創建一個方法來返回所有的戰鬥。是不是有可能有一天你只需要得到fights其中一些@userchallenger

我應該這樣做類似如下:

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