has_one和has_many

时间:2012-11-25 20:22:32

标签: ruby-on-rails ruby activerecord associations mongoid

我有一个Team对象和一个Game对象。

Game应该有一个获胜者Team Team可以成为多个Games

的赢家

如何正确构建?我正在使用Mongoid

这是我到目前为止所提出的......

class Game
  include Mongoid::Document
  include Mongoid::Timestamps
  has_one :winner, :class_name=>Team
end

class Team
  include Mongoid::Document
  include Mongoid::Timestamps
  has_and_belongs_to_many :games_won, :class_name=>"Game", :inverse_of => :Game 
end

1 个答案:

答案 0 :(得分:2)

考虑将胜利抽象到自己的类中,以便:

class Game
  has_one :win
end

class Team
  has_many :wins
end

class Win
  belongs_to :game
  belongs_to :team
end

这使得结构更具逻辑性,使代码更简单,并且在您可能因为其他原因而希望开始使用wins作为单独资源的情况下具有其他优势。