diff options
Diffstat (limited to 'app/models/game.rb')
-rw-r--r-- | app/models/game.rb | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/app/models/game.rb b/app/models/game.rb index c5cb32a..d5622af 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -1,7 +1,45 @@ class Game < ActiveRecord::Base belongs_to :parent, class_name: "Game" + has_many :children, class_name: "Game" - has_many :game_settings + has_many :game_settings + validates_associated :game_settings alias_attribute :settings, :game_settings + + validates(:name, + presence: true, + length: {minimum: 5}, + uniqueness: {case_sensitive: true}) + + validates(:min_players_per_team, + presence: true, + numericality: { + only_integer: true, + less_than_or_equal_to: :max_players_per_team, + }) + validates(:max_players_per_team, + presence: true, + numericality: { + only_integer: true, + greater_than_or_equal_to: :min_players_per_team, + }) + + validates(:min_teams_per_match, + presence: true, + numericality: { + only_integer: true, + less_than_or_equal_to: :max_teams_per_match, + }) + validates(:max_teams_per_match, + presence: true, + numericality: { + only_integer: true, + greater_than_or_equal_to: :min_teams_per_match, + }) + + validate :validate_scoring_method + def validate_scoring_method + (not self.scoring_method.try(:empty?)) and (Tournament.scoring_methods.include? scoring_method) + end end |