Class: LcpRuby::Permissions::SourceResolver
- Inherits:
-
Object
- Object
- LcpRuby::Permissions::SourceResolver
- Defined in:
- lib/lcp_ruby/permissions/source_resolver.rb
Class Method Summary collapse
-
.for(model_name, loader) ⇒ Metadata::PermissionDefinition?
Resolves a PermissionDefinition for the given model name.
Class Method Details
.for(model_name, loader) ⇒ Metadata::PermissionDefinition?
Resolves a PermissionDefinition for the given model name.
In :yaml mode, delegates directly to the loader’s YAML-based lookup.
In :model mode, uses first-found-wins resolution (no merging):
1. DB record for this specific model
2. DB record for "_default"
3. YAML fallback for this specific model
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/lcp_ruby/permissions/source_resolver.rb', line 16 def self.for(model_name, loader) if LcpRuby.configuration. == :model && Registry.available? # Try DB for this specific model perm_def = Registry.for_model(model_name) if perm_def set_db_source!(perm_def) return perm_def end # STI child fallback: try parent model in DB model_def = loader.model_definitions[model_name.to_s] if (parent_name = model_def&.sti_parent_name) perm_def = Registry.for_model(parent_name) if perm_def set_db_source!(perm_def) return perm_def end end # Try DB _default perm_def = Registry.for_model("_default") if perm_def set_db_source!(perm_def) return perm_def end end # YAML fallback (also used when permission_source is :yaml) # (yaml_permission_definition already has STI parent fallback) loader.(model_name) end |