Files
astuto/app/models/user.rb

72 lines
1.4 KiB
Ruby
Raw Normal View History

2019-08-18 18:51:25 +02:00
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:confirmable
2019-09-24 21:16:51 +02:00
has_many :posts, dependent: :destroy
2019-09-27 12:32:30 +02:00
has_many :likes, dependent: :destroy
2019-09-24 21:16:51 +02:00
has_many :comments, dependent: :destroy
2019-09-16 18:02:52 +02:00
2019-08-19 10:37:45 +02:00
enum role: [:user, :moderator, :admin]
enum status: [:active, :blocked, :deleted]
2019-08-19 10:37:45 +02:00
after_initialize :set_default_role, if: :new_record?
after_initialize :set_default_status, if: :new_record?
before_save :skip_confirmation
2019-08-19 10:37:45 +02:00
validates :full_name, presence: true, length: { in: 2..32 }
2019-08-19 15:45:44 +02:00
2019-08-19 10:37:45 +02:00
def set_default_role
self.role ||= :user
end
def set_default_status
self.status ||= :active
end
def active_for_authentication?
super && active?
end
def inactive_message
active? ? super : :blocked_or_deleted
end
def skip_confirmation
return if Rails.application.email_confirmation?
skip_confirmation!
skip_confirmation_notification!
skip_reconfirmation!
end
2019-08-19 17:42:13 +02:00
def gravatar_url
gravatar_id = Digest::MD5::hexdigest(email.downcase)
"https://secure.gravatar.com/avatar/#{gravatar_id}"
end
2019-09-16 19:38:56 +02:00
def power_user?
role == 'admin' || role == 'moderator'
end
2022-05-01 18:00:38 +02:00
def admin?
role == 'admin'
end
def moderator?
role == 'moderator'
end
def user?
role == 'user'
end
def active?
status == 'active'
end
def blocked?
status == 'blocked'
end
2019-08-18 18:51:25 +02:00
end