4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/composite_primary_keys/connection_adapters/sqlite3_adapter.rb', line 4
def join_to_update(update, select, key)
if key.is_a?(::CompositePrimaryKeys::CompositeKeys)
subselect = subquery_for(key, select)
subselect_aliased = Arel::Nodes::TableAlias.new(subselect, 'cpk_inner')
cpk_subselect = Arel::SelectManager.new(subselect_aliased)
cpk_subselect.project('*')
key.each do |a_key|
where_expr = subselect_aliased[a_key.name].eq(update.ast.relation[a_key.name])
cpk_subselect.where(where_expr)
end
where_clause = Arel::Nodes::SqlLiteral.new("EXISTS (#{cpk_subselect.to_sql})")
update.where(where_clause)
else
super
end
end
|