views:

199

answers:

2

Hello.

I have a model in Rails, User. Everytime I refer to him (for example, find_by_name("NAME") in script/console), its field/attribute last_login changes to the current time.

Here's my model:

class User < ActiveRecord::Base

    # ACCOUNT INFORATION VALIDATION
    validates_presence_of :name
    validates_uniqueness_of :name
    validates_length_of :name, :in => 4..16
    validates_format_of :name, :with => /^\w+$/i, :message => "can only contain letters, numbers and underlines."
    validates_presence_of :password
    validates_length_of :password, :in => 16..42, :message => "must be between 6 and 32 characters." #10 digits salt included
    validates_presence_of :email
    validates_uniqueness_of :email
    validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i

    # VALIDATES ENERGY AND HP
    before_save :check_attributes

    def after_find
     check_attributes(true)
    end

    def check_attributes(save=false)

     # HP
     if self.damage > 0 and self.last_hp_recovery.nil?
      self.last_hp_recovery=Time.now
     end

     while !self.last_hp_recovery.nil? and  self.last_hp_recovery<hp_recovery_time.minutes.ago
      self.damage-=1
      if self.damage == 0
       self.last_hp_recovery = nil
      else
       self.last_hp_recovery+=hp_recovery_time.minutes
      end
     end

     # ENERGY
     if self.energy_used > 0 and self.last_energy_recovery.nil?
      self.last_energy_recovery=Time.now
     end

     while !self.last_energy_recovery.nil? and  self.last_energy_recovery<energy_recovery_time.minutes.ago
      self.energy_used-=1
      if self.energy_used == 0
       self.last_energy_recovery = nil
      else
       self.last_energy_recovery+=energy_recovery_time.minutes
      end
     end

     self.save if save
    end


    def energy_recovery_time
     1
    end

    def hp_recovery_time
     1
    end

    # ATRIBUTES
    def hp
     @hp=max_hp-self.damage
    end

    def max_hp
     @max_hp=self.base_max_hp+race_hp_bonus
    end

    def energy
     @energy=max_energy-self.energy_used
    end

    def max_energy
     @max_energy=self.base_max_energy+race_energy_bonus
    end

    def attack
     @attack=self.base_attack+race_attack_bonus
    end

    def defense
     @defense=self.base_defense+race_defense_bonus
    end

    def agility
     @agility=self.base_agility+race_agility_bonus
    end

    # OTHER FUNCTIONS
    def generate_salt
     self.salt=""
     10.times do
      self.salt+=rand(10).to_s
     end
    end

    private
    # RACE FUNCTIONS
    def race_hp_bonus

     case self.race
     when 0

      case self.level
      when 1..5
       return 100
      end

     when 1
      case self.level
      when 1..5
       return 110
      end

     when 2
      case self.level
      when 1..5
       return 90
      end
     end

     return 0

    end 

    def race_energy_bonus

     case self.race
     when 0

      case self.level
      when 1..5
       return 100
      end

     when 1
      case self.level
      when 1..5
       return 110
      end

     when 2
      case self.level
      when 1..5
       return 90
      end
     end

     return 0

    end

    def race_attack_bonus

     case self.race
     when 0

      case self.level
      when 1..5
       return 10
      end

     when 1
      case self.level
      when 1..5
       return 11
      end

     when 2
      case self.level
      when 1..5
       return 9
      end
     end

     return 0

    end 

    def race_defense_bonus

     case self.race
     when 0

      case self.level
      when 1..5
       return 10
      end

     when 1
      case self.level
      when 1..5
       return 11
      end

     when 2
      case self.level
      when 1..5
       return 9
      end
     end

     return 0

    end 

    def race_agility_bonus

     case self.race
     when 0

      case self.level
      when 1..5
       return 10
      end

     when 1
      case self.level
      when 1..5
       return 11
      end

     when 2
      case self.level
      when 1..5
       return 9
      end
     end

     return 0

    end 

end

Any ideas why and how to prevent?

Thank you very much, Gabriel.

+1  A: 

Are you using any authentication plugins?

Toby Hede
No, the only plug-in I'm using is reCaptcha.
Gabriel Bianconi
A: 

I restarted my computer (restarting the server didn't work) and now it's ok... strange...

Gabriel Bianconi