Пользователь
А/В
class User < ApplicationRecord VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i attr_accessor :remember_token validates :email, format: { with: VALID_EMAIL_REGEX } validates :email, length: { maximum: 255 } validates :email, presence: true validates :email, uniqueness: { case_sensitive: false } validates :name, length: { maximum: 50 } validates :name, presence: true validates :password, length: { minimum: 6 } validates :password, presence: true before_save { self[:email] = email.downcase } has_secure_password class << self # Returns the hash digest of the given string. def digest(string) cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost BCrypt::Password.create(string, cost: cost) end # Returns a random token. def new_token SecureRandom.urlsafe_base64 end end # Remembers a user in the database for use in persistent sessions. def remember self[:remember_token] = User.new_token update_attribute(:remember_digest, User.digest(remember_token)) end # Returns true if the given token matches the digest. def authenticated?(remember_token) BCrypt::Password.new(remember_digest).is_password?(remember_token) end # Forgets a user. def forget update_attribute(:remember_digest, nil) end end
spec.add_dependency "twilio-ruby" spec.add_dependency "phony_rails"
Зачем мне что-то запоминать, когда я могу легко посмотреть это в книге. — Альберт Эйнштейн
В коде используете гемы: railties, activesupport, activerecord — 5 версии.