Sha256: d9a6b3da2a01614f6d4f46a073aa435cfce2b45b19f3a140b2dd77d607fe9ec1

Contents?: true

Size: 1.45 KB

Versions: 11

Compression:

Stored size: 1.45 KB

Contents

module Klastera::Concerns::Organization
  extend ActiveSupport::Concern
  included do
    serialize :cluster_config
    has_many :clusters
    
    validates :use_cluster_as, inclusion: { in: ::Cluster::MODES.map{|m|m.to_s}, message: I18n.t('klastera.clusters.wrong_option') }, if: proc{ use_cluster_as.present? }

    # Return a symbol version of use_cluster_as value
    def cluster_mode
      self.use_cluster_as.to_s.to_sym
    end

    def cluster_cardinality_of(entity, default: :many)
      if cluster_config.is_a?(Hash)
        entities_cardinality = cluster_config[:entities]&.[](:cardinality)||{}
        entity = entity.to_s.to_sym
        if entities_cardinality.has_key?(entity)
          default = entities_cardinality[entity]
        end
      end
      default.to_s.to_sym
    end

    ##
     # Return a boolean if one of three of options was set in organization
     # As useless option you can retrieve the value passing false as argument.
     #
     ##
    def is_in_cluster_mode?(return_the_mode=false)
      is_active = cluster_mode.present? && ::Cluster::MODES.include?(cluster_mode)
      ( return_the_mode ? ( is_active ? cluster_mode : false ) : is_active )
    end

    def required_suborganization_mode?
      cluster_mode == ::Cluster::REQUIRED_MODE
    end

    def optional_suborganization_mode?
      cluster_mode == ::Cluster::OPTIONAL_MODE
    end
  end
  
  module ClassMethods
    def cluster_params
      [ :use_cluster_as ]
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
klastera-1.5.4 app/models/klastera/concerns/organization.rb
klastera-1.5.2.4 app/models/klastera/concerns/organization.rb
klastera-1.4.4.5 app/models/klastera/concerns/organization.rb
klastera-1.5.1.0 app/models/klastera/concerns/organization.rb
klastera-1.5 app/models/klastera/concerns/organization.rb
klastera-1.4.4.3.1 app/models/klastera/concerns/organization.rb
klastera-1.4.4.4 app/models/klastera/concerns/organization.rb
klastera-1.4.4.3 app/models/klastera/concerns/organization.rb
klastera-1.4.4.2 app/models/klastera/concerns/organization.rb
klastera-1.4.4.1 app/models/klastera/concerns/organization.rb
klastera-1.4.4 app/models/klastera/concerns/organization.rb