Sha256: aaabcd1d6dd6d975a04a3ade086378abaf3996112476cebee4774c57c7268b80

Contents?: true

Size: 873 Bytes

Versions: 4

Compression:

Stored size: 873 Bytes

Contents

# frozen_string_literal: true

module Lite
  module Regulations
    module Containment

      extend ActiveSupport::Concern

      included do
        scope :contained, -> { where.not(contained_at: nil) }
        scope :uncontained, -> { where(contained_at: nil) }
      end

      def contain!
        return true if contained?

        update(contained_at: Time.current)
      end

      def contained?
        !uncontained?
      end

      def contained_at_or_time
        return contained_at if contained?

        Lite::Regulations::Base.timestamp
      end

      def to_containment
        I18n.t("lite.regulations.containment.#{uncontained? ? :uncontained : :contained}")
      end

      def uncontain!
        return true if uncontained?

        update(contained_at: nil)
      end

      def uncontained?
        contained_at.nil?
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lite-regulations-1.1.2 lib/lite/regulations/containment.rb
lite-regulations-1.1.1 lib/lite/regulations/containment.rb
lite-regulations-1.1.0 lib/lite/regulations/containment.rb
lite-regulations-1.0.0 lib/lite/regulations/containment.rb