forked from fixin.me/fixin.me
28 lines
899 B
Ruby
28 lines
899 B
Ruby
class User < ApplicationRecord
|
|
devise :database_authenticatable, :registerable, :confirmable,
|
|
:recoverable, :rememberable, :validatable
|
|
|
|
# Statuses ordered by decreasing privileges
|
|
enum :status, {
|
|
admin: 4, # admin level access
|
|
active: 3, # read-write user level access
|
|
restricted: 2, # read-only user level access
|
|
locked: 1, # disallowed to sign in due to failed logins; maintained by Devise :lockable
|
|
disabled: 0, # administratively disallowed to sign in
|
|
}, default: :active
|
|
|
|
has_many :units, dependent: :destroy
|
|
|
|
validates :email, presence: true, uniqueness: true,
|
|
length: {maximum: type_for_attribute(:email).limit}
|
|
validates :unconfirmed_email, length: {maximum: type_for_attribute(:unconfirmed_email).limit}
|
|
|
|
def to_s
|
|
email
|
|
end
|
|
|
|
def at_least(status)
|
|
User.statuses[self.status] >= User.statuses[status]
|
|
end
|
|
end
|