Class: LcpRuby::Export::FieldTreeBuilder
- Inherits:
-
Object
- Object
- LcpRuby::Export::FieldTreeBuilder
- Defined in:
- lib/lcp_ruby/export/field_tree_builder.rb
Overview
Builds a permission-aware field tree for the export field picker. Traverses belongs_to/has_one associations recursively with cycle detection.
Constant Summary collapse
- EXCLUDED_TYPES =
%w[attachment rich_text].freeze
- DEFAULT_MAX_DEPTH =
3
Class Method Summary collapse
-
.build(model_definition:, evaluator:, presenter: nil, current_user: nil, max_depth: DEFAULT_MAX_DEPTH) ⇒ Array<Hash>
Field tree nodes.
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(model_definition, evaluator, presenter, current_user, max_depth) ⇒ FieldTreeBuilder
constructor
A new instance of FieldTreeBuilder.
Constructor Details
#initialize(model_definition, evaluator, presenter, current_user, max_depth) ⇒ FieldTreeBuilder
Returns a new instance of FieldTreeBuilder.
19 20 21 22 23 24 25 |
# File 'lib/lcp_ruby/export/field_tree_builder.rb', line 19 def initialize(model_definition, evaluator, presenter, current_user, max_depth) @model_definition = model_definition @evaluator = evaluator @presenter = presenter @current_user = current_user @max_depth = max_depth end |
Class Method Details
.build(model_definition:, evaluator:, presenter: nil, current_user: nil, max_depth: DEFAULT_MAX_DEPTH) ⇒ Array<Hash>
Returns field tree nodes.
15 16 17 |
# File 'lib/lcp_ruby/export/field_tree_builder.rb', line 15 def self.build(model_definition:, evaluator:, presenter: nil, current_user: nil, max_depth: DEFAULT_MAX_DEPTH) new(model_definition, evaluator, presenter, current_user, max_depth).build end |
Instance Method Details
#build ⇒ Object
27 28 29 |
# File 'lib/lcp_ruby/export/field_tree_builder.rb', line 27 def build build_tree(@model_definition, @evaluator, depth: 0, visited: Set.new([ @model_definition.name ])) end |