module AssociateJsonb::ArelExtensions::Table
Attributes
store_tracker[R]
Public Class Methods
new(*args, store_tracker: nil, **opts)
click to toggle source
Calls superclass method
# File lib/associate_jsonb/arel_extensions/table.rb, line 9 def initialize(*args, store_tracker: nil, **opts) @store_tracker = store_tracker super(*args, **opts) end
Public Instance Methods
[](name)
click to toggle source
Calls superclass method
# File lib/associate_jsonb/arel_extensions/table.rb, line 23 def [](name) return super unless store_col = store_tracker&.get(name) attr = ::Arel::Nodes::Jsonb::DashDoubleArrow. 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
alias(...)
click to toggle source
Calls superclass method
# File lib/associate_jsonb/arel_extensions/table.rb, line 14 def alias(...) super(...).with_store_tracker(store_tracker) end
with_store_tracker(tracker)
click to toggle source
# File lib/associate_jsonb/arel_extensions/table.rb, line 18 def with_store_tracker(tracker) @store_tracker = tracker self end