Class: TTTenantVisitor

Inherits:
Arel::Visitors::DepthFirst
  • Object
show all
Defined in:
lib/activerecord-multi-tenant/query_rewriter.rb

Instance Method Summary collapse

Constructor Details

#initialize(arel) ⇒ TTTenantVisitor

Returns a new instance of TTTenantVisitor.



4
5
6
7
8
9
# File 'lib/activerecord-multi-tenant/query_rewriter.rb', line 4

def initialize(arel)
  super(Proc.new {})
  @tenant_relations = []

  accept(arel.ast)
end

Instance Method Details

#tenant_relationsObject



11
12
13
# File 'lib/activerecord-multi-tenant/query_rewriter.rb', line 11

def tenant_relations
  @tenant_relations.uniq
end

#visit_Arel_Nodes_TableAlias(table_alias, _collector = nil) ⇒ Object



19
20
21
# File 'lib/activerecord-multi-tenant/query_rewriter.rb', line 19

def visit_Arel_Nodes_TableAlias(table_alias, _collector = nil)
  @tenant_relations << table_alias if tenant_relation?(table_alias.left)
end

#visit_Arel_Table(table, _collector = nil) ⇒ Object



15
16
17
# File 'lib/activerecord-multi-tenant/query_rewriter.rb', line 15

def visit_Arel_Table(table, _collector = nil)
  @tenant_relations << table if tenant_relation?(table)
end