class Gitea::UserForm include ActiveModel::Model EMAIL_REGEX = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/ include ActiveModel::Model attr_accessor :username, :email, :password validates :username, presence: true validates :email, presence: true, format: { with: EMAIL_REGEX, multiline: true } validates :password, presence: true validate :check_username, :check_email attr_reader :record def persist @record = id ? User.find(id) : User.new if valid? @record.attributes = attributes.except(:password_confirmation, :id) @record.save! true else false end end private def check_username # errors.add(:login, :exist) raise "#{username} 已使用." if User.exists?(login: username.strip) end def check_email raise "#{email} 已使用." if User.exists?(mail: email.strip) end end