与同一模型的多个关系

时间:2012-08-09 05:00:57

标签: ruby-on-rails

我无法找到最佳方法。我有一个用户模型和一个锦标赛模型,我设置了一个has_many:通过这两个模型之间的关系称为'follow_tournaments',以便用户可以关注锦标赛。因此,我已经在User模型中有一个has_many:锦标赛,在锦标赛模型中有一个has_many:用户,这样锦标赛就有很多粉丝,用户可以参加很多锦标赛。

我想建立另一个habtm或has_many:通过关系,以便用户可以被视为锦标赛的“贡献者” - 与我已经建立的完全不同的关系。我想要一个锦标赛,让任意数量的贡献者和用户参与许多锦标赛。

实施此项目的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

使用sourceclass_name

class Tournament < ActiveRecord::Base
  has_many :users # ... whatever

  has_many :contributions

  # using class_name
  has_many :contributors, :through => :contributions

  # using source
  has_many :contributors, :through => :contributions, :source => :user
end

class Contribution < ActiveRecord::Base
  belongs_to :tournament

  # using class_name
  belongs_to :contributor, :class_name => 'User'

  # using source
  belongs_to :user
end