Sha256: 45aaeece598dd222f6f097b6c3a8b568aadc441b174efb354dc73e78a6e17827
Contents?: true
Size: 1.92 KB
Versions: 1
Compression:
Stored size: 1.92 KB
Contents
# frozen_string_literal: true module Tramway::RecordsModels def set_available_models(models, project:, role: :admin) initialize_available_models_for project, role Tramway::Error.raise_error :records, :wrong_available_models_type if !models.is_a?(Array) && !models.is_a?(Hash) handle_array_of_models(models, project:, role:) if models.is_a? Array @available_models[project][role].merge! models if models.is_a? Hash @available_models = @available_models.with_indifferent_access end def available_models_for(project, role: :admin) project = project.underscore.to_sym unless project.is_a? Symbol models = get_models_by_key(@available_models, project, role) models = available_models_for_engine(project, role, models) if project_is_engine?(project) models.map do |model| model.instance_of?(String) ? model.constantize : model end end def available_models(role:) models_array models_type: :available, role: end def clear_available_models! @available_models = {} end private def handle_array_of_models(models, project:, role:) models.each do |model| if model.instance_of?(Class) || model.instance_of?(String) @available_models[project][role].merge! model.to_s => %i[index show update create destroy] elsif model.instance_of?(Hash) @available_models[project][role].merge! model end end end def initialize_available_models_for(project, role) @available_models ||= {} @available_models[project] ||= {} @available_models[project][role] ||= {} end def available_models_for_engine(project, role, models) models + engine_class(project).dependencies.map do |dependency| if @available_models&.dig(dependency, role).present? @available_models&.dig(dependency, role)&.keys else Tramway::Error.raise_error(:records, :there_is_no_dependency, dependency:, project:) end end.flatten.compact end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tramway-0.1.2 | lib/tramway/records_models.rb |