Class: LcpRuby::ModelFactory::VirtualColumnApplicator

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/model_factory/virtual_column_applicator.rb

Constant Summary collapse

AR_TYPE_MAP =
{
  "integer" => :integer,
  "float" => :float,
  "decimal" => :decimal,
  "boolean" => :boolean,
  "string" => :string,
  "date" => :date,
  "datetime" => :datetime,
  "json" => :json,
  "text" => :string
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(model_class, model_definition) ⇒ VirtualColumnApplicator

Returns a new instance of VirtualColumnApplicator.



16
17
18
19
# File 'lib/lcp_ruby/model_factory/virtual_column_applicator.rb', line 16

def initialize(model_class, model_definition)
  @model_class = model_class
  @model_definition = model_definition
end

Instance Method Details

#apply!Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/lcp_ruby/model_factory/virtual_column_applicator.rb', line 21

def apply!
  return if @model_definition.virtual_columns.empty?

  @model_definition.virtual_columns.each_value do |vc_def|
    validate_service_virtual_column!(vc_def) if vc_def.service_type?

    # Declare AR attribute for type coercion
    ar_type = AR_TYPE_MAP[vc_def.inferred_type(@model_definition)] || :string
    @model_class.attribute vc_def.name.to_sym, ar_type
  end

  install_loaded_tracking!
end