218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
# File 'lib/activerecord-multi-tenant/query_rewriter.rb', line 218
def build_arel
arel = build_arel_orig
if MultiTenant.current_tenant_id && !MultiTenant.with_write_only_mode_enabled?
visitor = MultiTenant::ArelTenantVisitor.new(arel)
visitor.contexts.each do |context|
node = context.arel_node
context.unhandled_relations.each do |relation|
model = MultiTenant.multi_tenant_model_for_table(relation.arel_table.table_name)
enforcement_clause = MultiTenant::TenantEnforcementClause.new(relation.arel_table[model.partition_key])
case node
when Arel::Nodes::Join node.right.expr = node.right.expr.and(enforcement_clause)
when Arel::Nodes::SelectCore
if node.wheres.empty?
node.wheres = [enforcement_clause]
else
node.wheres[0] = enforcement_clause.and(node.wheres[0])
end
else
raise "UnknownContext"
end
end
end
end
arel
end
|