class VerificationCode < ApplicationRecord VALID_FOR = 15.minutes before_validation(on: :create) do self.token = rand(100000..999999).to_s end validates_presence_of :token belongs_to :user scope :valid, -> { where("verification_codes.created_at > ?", VALID_FOR.ago) } scope :expired, -> { where("verification_codes.created_at <= ?", VALID_FOR.ago) } def expires_at self.created_at + VALID_FOR end end