Rails - 像对象一样建模

时间:2017-03-01 23:59:10

标签: ruby-on-rails oop model

这里的Rails新手。我正在尝试创建一个应用程序来显示有关足球比赛的信息。我有一个Game模型,用于包含有关匹配的信息。我希望在game对象中包含的一种信息是匹配中发生的事件,例如目标和纪律处分。

class Game < ApplicationRecord
  has_many :events
end

对这些事件进行建模的最佳方法是什么?应该只有一个Event模型,还是创建扩展Event的多个模型有任何优势,例如GoalYellowCardRedCard等?< / p>

2 个答案:

答案 0 :(得分:1)

您可以使用类似EventType模型的内容:

# game.rb
class Game < ApplicationRecord
  has_many :events
end

# event.rb
class Event < ApplicationRecord
  belongs_to :event_type
end

# event_type.rb
class EventType < ApplicationRecord
end

events表中,您可以存储时间/备注等信息,并且会有一个字段event_type_id。在event_types表中,您可以存储目标,yellow_card等操作。

然后,您可以轻松地进行查询,例如在特定比赛中查找所有目标等。

答案 1 :(得分:-1)

一个让你入门的建议。

class Game < ActiveRecord::Base
  has_many :teams
  has_many :players, through: :teams
  has_many :goals
  has_many :cards
end

class Team < ActiveRecord::Base
  has_many :players
end

class Player < ActiveRecord::Base
  belongs_to :team
  has_many :cards
  has_many :goals
end

class Card < ActiveRecord::Base
  belongs_to :player
  belongs_to :game
end

class Goal < ActiveRecord::Base
  belongs_to :player
  belongs_to :game
end

* obs:您可能想要添加TeamLineup模型,因为团队可以根据游戏拥有不同的阵容。我知道你问了一些事件,但我认为上面提出的解决方案,更好地模拟足球比赛