module AssociateJsonb::ArelExtensions::Nodes::TableAlias

Attributes

store_tracker[R]

Public Class Methods

new(*args, store_columns: nil) click to toggle source
Calls superclass method
# File lib/associate_jsonb/arel_extensions/nodes/table_alias.rb, line 10
def initialize(*args, store_columns: nil)
  @store_columns = store_columns
  super(*args)
end

Public Instance Methods

[](name) click to toggle source
Calls superclass method
# File lib/associate_jsonb/arel_extensions/nodes/table_alias.rb, line 20
def [](name)
  return super unless store_col = store_tracker&.get(name)

  attr = ::Arel::Nodes::Jsonb::DashArrow.
    new(self, self[store_col[:store]], store_col[:key])

  if cast_as = (store_col[:cast] && store_col[:cast][:sql_type])
    attr = ::Arel::Nodes::NamedFunction.new(
      "CAST",
      [ attr.as(cast_as) ]
    )
  end

  Arel::Nodes::Jsonb::Attribute.new(self, name, attr)
end
with_store_tracker(tracker) click to toggle source
# File lib/associate_jsonb/arel_extensions/nodes/table_alias.rb, line 15
def with_store_tracker(tracker)
  @store_tracker = tracker
  self
end