Class: LcpRuby::ModelFactory::VirtualColumnApplicator
- Inherits:
-
Object
- Object
- LcpRuby::ModelFactory::VirtualColumnApplicator
- 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
- #apply! ⇒ Object
-
#initialize(model_class, model_definition) ⇒ VirtualColumnApplicator
constructor
A new instance of VirtualColumnApplicator.
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 |