Files
progress-test/app/models/user.rb
2022-07-31 21:17:22 -03:00

61 lines
1.6 KiB
Ruby

# == Schema Information
#
# Table name: users
#
# id :bigint not null, primary key
# avatar_url :string
# deleted_at :datetime
# email :string default(""), not null
# encrypted_password :string default(""), not null
# name :string not null
# remember_created_at :datetime
# reset_password_sent_at :datetime
# reset_password_token :string
# roles :string default([]), is an Array
# created_at :datetime not null
# updated_at :datetime not null
#
# Indexes
#
# index_users_on_email (email) UNIQUE
# index_users_on_reset_password_token (reset_password_token) UNIQUE
#
class User < ApplicationRecord
include Trashable
extend Enumerize
devise :database_authenticatable,
:recoverable,
:rememberable,
:validatable,
:omniauthable,
omniauth_providers: [:google_oauth2]
enumerize :roles,
multiple: true,
default: :teacher,
in: %i[admin nde coordinator center_director pro_rector teacher]
validates :name, presence: true
before_validation :set_random_password, on: :create
roles.values.each do |role|
define_method "#{role}?" do
roles.include?(role)
end
end
def self.from_omniauth(email, avatar_url)
User.find_by(email: email).tap do |user|
user.update(avatar_url: avatar_url) unless user.nil?
end
end
private
def set_random_password
self.password = SecureRandom.alphanumeric
end
end