2017-03-01 6 views
0

Schienen Anfänger hier. Ich versuche, eine Anwendung zu erstellen, um Informationen über Fußballspiele anzuzeigen. Ich habe ein Game Modell, das Informationen über eine Übereinstimmung enthalten soll. Eine Art von Informationen, die ich gerne in ein game Objekt aufnehmen möchte, sind die Ereignisse, die im Spiel vorkommen, wie Ziele und disziplinarische Maßnahmen.Schienen - Modellierung wie Objekte

class Game < ApplicationRecord 
    has_many :events 
end 

Wie können diese Ereignisse am besten modelliert werden? Sollte es nur ein Event Modell geben oder gibt es einen Vorteil, mehrere Modelle zu erstellen, die Event wie Goal, YellowCard, RedCard, etc. erweitern?

Antwort

1

Sie können so etwas wie ein Eventtype Modell verwenden:

# 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 

In der Tabelle events Sie Informationen wie Zeit/Notizen speichern können, und es wäre ein Feld event_type_id sein. In der event_types Tabelle können Sie Aktionen speichern wie Ziel, yellow_card usw.

würden Sie dann leicht in der Lage sein, um Anfragen so zu machen wie alle Ziele in einem bestimmten Spiel usw. finden

+0

Hatte nicht daran gedacht, aber ich mag die Idee. Gibt es eine gute Möglichkeit, die unterschiedlichen Attribute zu berücksichtigen, die ein 'event'-Objekt abhängig von dem' event_type' benötigt, zu dem es gehört? – Jay

-1

Einen Vorschlag für den Einstieg.

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: Sie können ein TeamLineup Modell hinzuzufügen, als ein Team auf dem Spiel je unterschiedliche Aufstellungen hat. Ich weiß, dass Sie nach Veranstaltungen gefragt haben, aber ich denke, die vorgeschlagene Lösung oben, Modelle ein Fußballspiel besser