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