has_many,belongs_to association其中has_many关联模型在belongs_to associated_model中有两个别名fk

时间:2010-06-19 10:54:38

标签: ruby-on-rails associations foreign-key-relationship has-many belongs-to

我有一个有许多打斗的用户模型。战斗属于用户。

战斗表中有两个外键引用回用户PK - challenger_id和challengee_id。

诀窍是如何在User模型上编写has_many关联,以便它返回user_id = challenger_id或challengee_id的战斗?

1 个答案:

答案 0 :(得分:1)

我相信你应该使用两个独立的关联并创建一个方法来返回所有战斗。有一天你不可能只获得fights @user challenger的所有内容吗?

我会像下面这样做:

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