rails association - has_many vs has_and_belongs_to_many

时间:2013-11-14 19:09:01

标签: ruby-on-rails ruby ruby-on-rails-4 model-associations

我遇到了我认为是基本关联的问题。

我有一个游戏模型和一个Matchset模型。

在游戏模型中是一个游戏列表。游戏只在游戏桌上列出一次,但它们可以属于许多Matchsets。

matchset.rb -

has_many :games

对于game.rb我不确定我会放什么。我不想把belongs_to放在一起,因为它属于许多匹配集,而不仅仅是一个。而且我认为我不想把has_and_belongs_to_many放在一起,因为matchsets不一定“属于”游戏,但也许我只是看错了。

示例:Matchset 1有游戏1,3和5. Matchset 2有游戏2和3. Matchset 3有游戏3,4和5。

我使用Oracle SQL的背景,在我的脑海中,Matchset表看起来像这样。

id | game_id 
1  | 1
1  | 3
1  | 5
2  | 2
2  | 3
3  | 3
3  | 4
3  | 5

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这些关系适合你:

class Game < ActiveRecord::Base
  has_many :game_match_set_relations
  has_many :match_sets, through: :game_match_set_relations

class MatchSet < ActiveRecord::Base
  has_many :game_match_set_relations
  has_many :games,  through: :game_match_set_relations

class GameMatchSetRelation < ActiveRecord::Base
  belongs_to :game
  belongs_to :match_set

  validates :game_id, presence: true
  validates :match_set_id, presence: true