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