Module: LcpRuby::Presenter::IncludesResolver
- Defined in:
- lib/lcp_ruby/presenter/includes_resolver.rb,
lib/lcp_ruby/presenter/includes_resolver/loading_strategy.rb,
lib/lcp_ruby/presenter/includes_resolver/strategy_resolver.rb,
lib/lcp_ruby/presenter/includes_resolver/dependency_collector.rb,
lib/lcp_ruby/presenter/includes_resolver/association_dependency.rb
Overview
Resolves which associations to eager-load for a given presenter context.
Auto-detects dependencies from presenter metadata (FK columns, association_list, nested_fields) and supports manual overrides via includes/eager_load keys in presenter YAML/DSL config.
Usage:
strategy = IncludesResolver.resolve(
presenter_def: presenter,
model_def: model,
context: :index,
sort_field: params[:sort],
search_fields: ["company.name"]
)
scope = strategy.apply(scope)
Defined Under Namespace
Classes: AssociationDependency, DependencyCollector, LoadingStrategy, StrategyResolver
Class Method Summary collapse
Class Method Details
.resolve(presenter_def:, model_def:, context:, sort_field: nil, search_fields: nil) ⇒ LoadingStrategy
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/lcp_ruby/presenter/includes_resolver.rb', line 25 def self.resolve(presenter_def:, model_def:, context:, sort_field: nil, search_fields: nil) collector = DependencyCollector.new collector.from_presenter(presenter_def, model_def, context) collector.from_sort(sort_field, model_def) if sort_field collector.from_search(search_fields, model_def) if search_fields&.any? config = case context when :index then presenter_def.index_config when :show then presenter_def.show_config when :form then presenter_def.form_config end collector.from_manual(config) if config StrategyResolver.resolve(collector.dependencies, model_def) end |