Class: User
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- User
- Includes:
- Checkable, Toggleable
- Defined in:
- app/models/user.rb
Overview
User
Constant Summary collapse
- METRIC_AUTHENTICATION_SUCCESS =
'users.authentication.success.hit'
- METRIC_AUTHENTICATION_FAILURE =
'users.authentication.failure.hit'
- METRIC_AUTHENTICATION_EXTERNAL =
'users.authentication.external.hit'
- EMAIL_LIMIT =
250
- NOTICE_LIMIT =
255
- PHONE_LIMIT =
50
- SLUG_LIMIT =
250
- EMAIL_PATTERN =
/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z0-9][-a-z0-9]+)\z/i.freeze
- SCREEN_NAME_LIMIT =
30
- SCREEN_NAME_PATTERN =
/\A[-a-z0-9_]{1,30}\z/i.freeze
- SCREEN_NAME_PATTERN_HTML =
'^[-a-zA-Z0-9_]{1,30}$'
Class Method Summary collapse
-
.entity_parameters ⇒ Object
Параметры для администрирования.
- .ids_range ⇒ Object
-
.new_profile_parameters ⇒ Object
Параметры при регистрации.
- .page_for_administration(page, search_query = '') ⇒ Object
- .profile_parameters ⇒ Object
- .sensitive_parameters ⇒ Object
Instance Method Summary collapse
- #can_receive_letters? ⇒ Boolean
- #full_name(include_patronymic = false) ⇒ Object
- #name_for_letter ⇒ Object
- #native_slug? ⇒ Boolean
-
#profile_name ⇒ String
Name to be shown as profile.
Class Method Details
.entity_parameters ⇒ Object
Параметры для администрирования
94 95 96 97 98 |
# File 'app/models/user.rb', line 94 def self.entity_parameters flags = %i[bot allow_login email_confirmed phone_confirmed foreign_slug] new_profile_parameters + flags + %i[screen_name notice balance] end |
.ids_range ⇒ Object
100 101 102 103 104 |
# File 'app/models/user.rb', line 100 def self.ids_range min = User.minimum(:id).to_i max = User.maximum(:id).to_i (min..max) end |
.new_profile_parameters ⇒ Object
Параметры при регистрации
89 90 91 |
# File 'app/models/user.rb', line 89 def self.new_profile_parameters profile_parameters + sensitive_parameters + %i[screen_name] end |
.page_for_administration(page, search_query = '') ⇒ Object
76 77 78 |
# File 'app/models/user.rb', line 76 def self.page_for_administration(page, search_query = '') list_for_administration.search(search_query).page(page) end |
.profile_parameters ⇒ Object
80 81 82 |
# File 'app/models/user.rb', line 80 def self.profile_parameters %i[image allow_mail birthday consent] end |
.sensitive_parameters ⇒ Object
84 85 86 |
# File 'app/models/user.rb', line 84 def self.sensitive_parameters %i[email phone password password_confirmation] end |
Instance Method Details
#can_receive_letters? ⇒ Boolean
128 129 130 |
# File 'app/models/user.rb', line 128 def can_receive_letters? allow_mail? && !email.blank? end |
#full_name(include_patronymic = false) ⇒ Object
121 122 123 124 125 126 |
# File 'app/models/user.rb', line 121 def full_name(include_patronymic = false) result = [name_for_letter] result << data.dig('profile', 'patronymic').to_s.strip if include_patronymic result << data.dig('profile', 'surname').to_s.strip result.compact.join(' ') end |
#name_for_letter ⇒ Object
116 117 118 |
# File 'app/models/user.rb', line 116 def name_for_letter data.dig('profile', 'name').blank? ? profile_name : data['profile']['name'] end |
#native_slug? ⇒ Boolean
132 133 134 |
# File 'app/models/user.rb', line 132 def native_slug? !foreign_slug? end |
#profile_name ⇒ String
Name to be shown as profile
This can be redefined for cases when something other than screen name should be used.
112 113 114 |
# File 'app/models/user.rb', line 112 def profile_name screen_name end |