Class: ApiQueryLanguage::ActiveRecord::Fields::MappingToColumn
- Inherits:
-
Object
- Object
- ApiQueryLanguage::ActiveRecord::Fields::MappingToColumn
- Defined in:
- lib/api_query_language/active_record/fields/mapping_to_column.rb
Defined Under Namespace
Classes: ColumnInfo, Mapping
Instance Method Summary collapse
-
#initialize(root_model, current_relation, field_to_attribute_mappings) ⇒ MappingToColumn
constructor
A new instance of MappingToColumn.
- #map_field(field) ⇒ Object
Constructor Details
#initialize(root_model, current_relation, field_to_attribute_mappings) ⇒ MappingToColumn
Returns a new instance of MappingToColumn.
12 13 14 15 16 |
# File 'lib/api_query_language/active_record/fields/mapping_to_column.rb', line 12 def initialize(root_model, current_relation, field_to_attribute_mappings) @current_relation = current_relation @root_model = root_model @field_to_attribute_mappings = field_to_attribute_mappings end |
Instance Method Details
#map_field(field) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/api_query_language/active_record/fields/mapping_to_column.rb', line 18 def map_field(field) raw_mapping = @field_to_attribute_mappings[field.to_sym] value_transform = raw_mapping.respond_to?(:transform) ? raw_mapping.transform : nil allowed_values = raw_mapping.respond_to?(:allowed_values) ? raw_mapping.allowed_values : nil column_info = table_column_for_field!(fetch_field_mapping!(field)) relation = @current_relation if column_info.is_a?(ColumnInfo) result = apply_joins!(column_info, relation) Mapping.new(column: result.column, relation: result.relation, value_transform:, allowed_values:) else Mapping.new(column: @root_model.arel_table[column_info], relation:, value_transform:, allowed_values:) end end |