Class: Password

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/password.rb

Instance Method Summary collapse

Instance Method Details

#days_oldObject



9
10
11
# File 'app/models/password.rb', line 9

def days_old
  (Time.now.to_datetime - self.created_at.to_datetime).to_i
end

#days_remainingObject



13
14
15
# File 'app/models/password.rb', line 13

def days_remaining
  [(self.expire_after_days - self.days_old), 0].max
end

#to_paramObject



5
6
7
# File 'app/models/password.rb', line 5

def to_param
  self.url_token.to_s
end

#validate!Object

validate!

Run basic validations on the password. Expire the password if it’s limits have been reached (time or views)



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/password.rb', line 27

def validate!
  return if expired

  # Range checking
  self.expire_after_days  ||= EXPIRE_AFTER_DAYS_DEFAULT
  self.expire_after_views ||= EXPIRE_AFTER_VIEWS_DEFAULT

  unless self.expire_after_days.between?(EXPIRE_AFTER_DAYS_MIN, EXPIRE_AFTER_DAYS_MAX)
    self.expire_after_days = EXPIRE_AFTER_DAYS_DEFAULT
  end

  unless self.expire_after_views.between?(EXPIRE_AFTER_VIEWS_MIN, EXPIRE_AFTER_VIEWS_MAX)
    self.expire_after_views = EXPIRE_AFTER_VIEWS_DEFAULT
  end

  unless self.new_record?
    if (self.days_old >= self.expire_after_days) or (self.views.count >= self.expire_after_views)
      # This password has hit max age or max views - expire it
      self.expired = true
      self.payload = nil
      self.save
    end
  end
end

#views_remainingObject



17
18
19
# File 'app/models/password.rb', line 17

def views_remaining
  [(self.expire_after_views - self.views.count), 0].max
end