Sha256: fc337810b493324d00555bd6159c93c5bd8108e10b821b7db171d1845f8f1527

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 KB

Contents

class Entry < ActiveRecord::Base
  belongs_to :user
  belongs_to :pool
  validates_uniqueness_of :name, :scope => :pool_id
  validates_presence_of :tie_break
  validates_presence_of :user_id
  attr_accessor :old_name

  # Override bracket to resolve the db blob to an object
  def bracket
    unless @bracket
      if self[:data]
        @bracket = Marshal.load(self[:data])
      end
      @bracket ||= Tournament::Bracket.new(self.pool.pool.tournament_entry.picks.teams)
    end
    @bracket
  end

  def reset
    @bracket = Tournament::Bracket.new(self.pool.pool.tournament_entry.picks.teams)
  end

  def before_save
    if @bracket
      logger.debug("MARSHALLING BRACKET: #{@bracket.inspect}")
      self[:data] = Marshal.dump(@bracket)
      logger.debug("DONE MARSHALLING BRACKET")
    end
  end

  def after_save
    if self.bracket.complete? && self.user_id != self.pool.user_id
      if self.old_name
        # We changed entry names, so pull the old one out of the
        # backing pool
        self.pool.pool.entries.delete_if{|e| self.old_name == e.name}
      end
      self.pool.pool.update_entry(self.tournament_entry)
      self.pool.save!
    end
  end

  # Override name= to record name changes
  def name=(new_name)
    if new_name != self.name
      self.old_name = self.name
      self.write_attribute(:name, new_name)
    end
  end

  def tournament_entry
    @tournament_entry ||= Tournament::Entry.new(self.name, self.bracket, self.tie_break)
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
tournament-5.0.0 webgui/app/models/entry.rb
tournament-4.2.0 webgui/app/models/entry.rb
tournament-4.0.2 webgui/app/models/entry.rb
tournament-4.0.0 webgui/app/models/entry.rb