236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
# File 'lib/activerecord-multi-tenant/query_rewriter.rb', line 236
def build_arel(*args)
arel = build_arel_orig(*args)
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
|