Sha256: 613ab43175a397cfef3a55085335d143a9577c2f439a0b2f360c72ed871f677b

Contents?: true

Size: 499 Bytes

Versions: 5

Compression:

Stored size: 499 Bytes

Contents

# frozen_string_literal: true

class Invite < ApplicationRecord
  include PagesCore::Emailable
  include PagesCore::HasRoles

  belongs_to :user
  has_many :roles, class_name: "InviteRole", dependent: :destroy

  before_validation :ensure_token

  validates :token, presence: true

  validate :user_already_exists

  private

  def ensure_token
    self.token ||= SecureRandom.hex(32)
  end

  def user_already_exists
    return unless User.find_by(email:)

    errors.add(:email, :taken)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pages_core-3.15.5 app/models/invite.rb
pages_core-3.15.4 app/models/invite.rb
pages_core-3.15.3 app/models/invite.rb
pages_core-3.15.2 app/models/invite.rb
pages_core-3.15.1 app/models/invite.rb