summaryrefslogtreecommitdiff
path: root/app/models/tournament.rb
diff options
context:
space:
mode:
authorAndrewMurrell <amurrel@purdue.edu>2014-04-06 22:20:24 -0400
committerAndrewMurrell <amurrel@purdue.edu>2014-04-06 22:20:24 -0400
commit91fee659eadaf6bcc4d063fd5645950da1250896 (patch)
treebf1df15fd055199fc07d971623bfd6632dc3dee4 /app/models/tournament.rb
parent0d42079611ed2aeacd71b926580fdc3b943cf1ba (diff)
A few bug fixes, and a bunch of code that almost works.
Diffstat (limited to 'app/models/tournament.rb')
-rw-r--r--app/models/tournament.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/app/models/tournament.rb b/app/models/tournament.rb
index e408cfe..0b55cb6 100644
--- a/app/models/tournament.rb
+++ b/app/models/tournament.rb
@@ -1,9 +1,56 @@
class Tournament < ActiveRecord::Base
belongs_to :game
has_many :matches
+ has_many :preferences_raw, class_name: "TournamentPreference"
has_and_belongs_to_many :players, class_name: "User", association_foreign_key: "player_id", join_table: "players_tournaments"
has_and_belongs_to_many :hosts, class_name: "User", association_foreign_key: "host_id", join_table: "hosts_tournaments"
+ def preferences
+ @preferences ||= Preferences.new(self)
+ end
+ def preferences=(pref)
+ pref.each do |key, value|
+ value = false if valuedd == "0"
+ preferences[key] = value
+ end
+ end
+
+ class Preferences
+ def initialize(tournament)
+ @tournament = tournament
+ end
+
+ def [](preference)
+ p = @tournament.preferences_raw.find_by_name(preference)
+ if p.nil?
+ return nil
+ else
+ return p.value
+ end
+ end
+
+ def []=(preference, value)
+ p = @tournament.preferences_raw.find_by_name(preference)
+ if p.nil?
+ # TODO: create it
+ else
+ p.value = value
+ end
+ end
+
+ def keys
+ @tournament.preferences_raw.all.collect { |x| x.name }
+ end
+
+ def method_missing(name, *args)
+ if name.to_s.ends_with?('=')
+ self[name.to_s.sub(/=$/, '').to_sym] = args.first
+ else
+ return self[name.to_sym]
+ end
+ end
+ end
+
def open?
return true
end