|
|
|
@ -30,6 +30,11 @@ class User < ApplicationRecord
|
|
|
|
|
|
|
|
|
|
LOGIN_CHARS = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z).freeze
|
|
|
|
|
|
|
|
|
|
# educoder: 来自Educoder平台
|
|
|
|
|
# trustie: 来自Trustie平台
|
|
|
|
|
# forge: 平台本身注册的用户
|
|
|
|
|
enum platform: [:forge, :educoder, :trustie]
|
|
|
|
|
|
|
|
|
|
belongs_to :laboratory, optional: true
|
|
|
|
|
|
|
|
|
|
has_one :user_extension, dependent: :destroy
|
|
|
|
@ -168,6 +173,7 @@ class User < ApplicationRecord
|
|
|
|
|
#
|
|
|
|
|
# validations
|
|
|
|
|
#
|
|
|
|
|
validates :platform, inclusion: { in: %w(forge educoder trustie) }
|
|
|
|
|
validates_presence_of :login, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }, case_sensitive: false
|
|
|
|
|
validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, case_sensitive: false
|
|
|
|
|
validates_uniqueness_of :mail, :if => Proc.new { |user| user.mail_changed? && user.mail.present? }, case_sensitive: false
|
|
|
|
|