2025-01-24 10:22:13 -08:00
|
|
|
class Player < ApplicationRecord
|
2025-01-25 17:37:01 -08:00
|
|
|
# A Player can be an alt of another player (the main)
|
|
|
|
belongs_to :main_player, class_name: "Player", optional: true, foreign_key: "main_player_id"
|
|
|
|
|
|
|
|
# A Player can have multiple alts
|
|
|
|
has_many :alternate_players, class_name: "Player", foreign_key: "main_player_id"
|
|
|
|
|
|
|
|
validate :no_circular_references
|
|
|
|
|
|
|
|
def total_wins
|
|
|
|
w = self.wins
|
|
|
|
alternate_players.each { |alt|
|
|
|
|
w += alt.wins
|
|
|
|
}
|
|
|
|
w
|
|
|
|
end
|
|
|
|
|
|
|
|
def total_losses
|
|
|
|
l = self.losses
|
|
|
|
alternate_players.each { |alt|
|
|
|
|
l += alt.losses
|
|
|
|
}
|
|
|
|
l
|
|
|
|
end
|
|
|
|
|
|
|
|
def total_purse
|
|
|
|
p = self.purse
|
|
|
|
alternate_players.each { |alt|
|
|
|
|
p += alt.purse
|
|
|
|
}
|
|
|
|
p
|
|
|
|
end
|
|
|
|
|
|
|
|
def alt?
|
|
|
|
self.main_player
|
|
|
|
end
|
|
|
|
|
2025-02-03 14:42:41 -08:00
|
|
|
def alts_concat
|
|
|
|
self.alternate_players.map(&:name).join(", ")
|
|
|
|
end
|
|
|
|
|
2025-01-25 17:37:01 -08:00
|
|
|
def no_circular_references
|
|
|
|
if main_player_id.present? && (main_player.main_player== self)
|
|
|
|
errors.add(:main_account, "circular reference")
|
|
|
|
end
|
|
|
|
end
|
2025-01-24 10:22:13 -08:00
|
|
|
end
|