# frozen_string_literal: true # UserAccount model # email: string # password_digest (secure password): string # first_name: string # last_name: string # session_key: string class UserAccount < ApplicationRecord has_secure_password validations: false has_one :cart, dependent: :destroy has_many :user_account_addresses, dependent: :destroy has_many :addresses, through: :user_account_addresses has_many :cards, dependent: :destroy has_many :product_reviews has_many :orders validates :email, presence: true validates :email, uniqueness: true validates :password, presence: true, if: :no_password? validates_format_of :email, with: /\A(|(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})\z/i validates :first_name, presence: true validates :last_name, presence: true validates :role, presence: true, inclusion: { in: %w[master regular] } def full_name "#{first_name} #{last_name}" end private def no_password? password_digest.nil? end end