module Tramway::Admin
Constants
- VERSION
Attributes
Public Class Methods
action_is_available?(record, project:, role:, model_name:, action:)
click to toggle source
# File lib/tramway/admin.rb, line 56 def action_is_available?(record, project:, role:, model_name:, action:) project = project.underscore.to_sym unless project.is_a? Symbol actions = select_actions(project: project, role: role, model_name: model_name) availability = actions&.select do |a| if a.is_a? Symbol a == action.to_sym elsif a.is_a? Hash a.keys.first.to_sym == action.to_sym end end&.first return false unless availability.present? return true if availability.is_a? Symbol availability.values.first.call record end
engine_class(project)
click to toggle source
# File lib/tramway/admin.rb, line 29 def engine_class(project) class_name = "::Tramway::#{project.to_s.camelize}" class_name.classify.safe_constantize end
get_models_by_key(checked_models, project, role)
click to toggle source
# File lib/tramway/admin.rb, line 38 def get_models_by_key(checked_models, project, role) unless project.present? error = Tramway::Error.new( plugin: :admin, method: :get_models_by_key, message: "Looks like you have not create at least one instance of #{Tramway::Core.application.model_class} model OR Tramway Application Model is nil" ) raise error.message end checked_models && checked_models[project]&.dig(role)&.keys || [] end
models_array(models_type:, role:)
click to toggle source
# File lib/tramway/admin.rb, line 50 def models_array(models_type:, role:) instance_variable_get("@#{models_type}_models")&.map do |projects| projects.last[role]&.keys end&.flatten || [] end
project_is_engine?(project)
click to toggle source
# File lib/tramway/admin.rb, line 34 def project_is_engine?(project) engine_class(project) end
select_actions(project:, role:, model_name:)
click to toggle source
# File lib/tramway/admin.rb, line 73 def select_actions(project:, role:, model_name:) stringify_keys(@singleton_models&.dig(project, role))&.dig(model_name) || stringify_keys(@available_models&.dig(project, role))&.dig(model_name) end
stringify_keys(hash)
click to toggle source
# File lib/tramway/admin.rb, line 77 def stringify_keys(hash) hash&.reduce({}) do |new_hash, pair| new_hash.merge! pair[0].to_s => pair[1] end end