# frozen_string_literal: true class AccountRole < ApplicationRecord ################ # Associations # ################ belongs_to :account belongs_to :role ########## # Scopes # ########## scope :active, -> { not_deleted.not_expired } scope :not_deleted, -> { where(deleted_at: nil) } scope :not_expired, lambda { where( arel_table[:expires_at].eq(nil).or( arel_table[:expires_at].gt(Time.zone.now), ), ) } ############### # Validations # ############### validate :deleted_at_is_not_in_future private def deleted_at_is_not_in_future return if deleted_at.nil? errors.add :deleted_at unless deleted_at <= Time.zone.now + 10 end end