aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-11-16 14:20:07 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2013-11-16 14:20:07 -0800
commitaa14068100a968c6c616a525c287fbfaacc7d487 (patch)
tree3c5255d88a32cf72af0b438e6b38eec3a23e4c56
parentff8b3bcf7044288bb13e98208650f141e0460908 (diff)
downloadrails-aa14068100a968c6c616a525c287fbfaacc7d487.tar.gz
rails-aa14068100a968c6c616a525c287fbfaacc7d487.tar.bz2
rails-aa14068100a968c6c616a525c287fbfaacc7d487.zip
explicitly pass the pk to compile_update
-rw-r--r--lib/arel/crud.rb4
-rw-r--r--test/test_crud.rb2
-rw-r--r--test/test_select_manager.rb12
3 files changed, 9 insertions, 9 deletions
diff --git a/lib/arel/crud.rb b/lib/arel/crud.rb
index ef14439a1f..6f4962cbfe 100644
--- a/lib/arel/crud.rb
+++ b/lib/arel/crud.rb
@@ -2,7 +2,7 @@ module Arel
###
# FIXME hopefully we can remove this
module Crud
- def compile_update values
+ def compile_update values, pk
um = UpdateManager.new @engine
if Nodes::SqlLiteral === values
@@ -10,7 +10,7 @@ module Arel
else
relation = values.first.first.relation
end
- um.key= relation.primary_key
+ um.key = pk
um.table relation
um.set values
um.take @ast.limit.expr if @ast.limit
diff --git a/test/test_crud.rb b/test/test_crud.rb
index fe3e4f2e02..ded1b632b7 100644
--- a/test/test_crud.rb
+++ b/test/test_crud.rb
@@ -45,7 +45,7 @@ module Arel
table = Table.new :users
fc = FakeCrudder.new
fc.from table
- stmt = fc.compile_update [[table[:id], 'foo']]
+ stmt = fc.compile_update [[table[:id], 'foo']], table.primary_key
assert_instance_of Arel::UpdateManager, stmt
end
end
diff --git a/test/test_select_manager.rb b/test/test_select_manager.rb
index 9779aca21d..960e2b1a02 100644
--- a/test/test_select_manager.rb
+++ b/test/test_select_manager.rb
@@ -921,7 +921,7 @@ module Arel
manager = Arel::SelectManager.new engine
manager.from table
manager.take 1
- stmt = manager.compile_update(SqlLiteral.new('foo = bar'))
+ stmt = manager.compile_update(SqlLiteral.new('foo = bar'), table.primary_key)
stmt.key = table['id']
stmt.to_sql.must_be_like %{
@@ -936,7 +936,7 @@ module Arel
manager = Arel::SelectManager.new engine
manager.from table
manager.order :foo
- stmt = manager.compile_update(SqlLiteral.new('foo = bar'))
+ stmt = manager.compile_update(SqlLiteral.new('foo = bar'), table.primary_key)
stmt.key = table['id']
stmt.to_sql.must_be_like %{
@@ -950,7 +950,7 @@ module Arel
table = Table.new :users
manager = Arel::SelectManager.new engine
manager.from table
- stmt = manager.compile_update(SqlLiteral.new('foo = bar'))
+ stmt = manager.compile_update(SqlLiteral.new('foo = bar'), table.primary_key)
stmt.to_sql.must_be_like %{ UPDATE "users" SET foo = bar }
end
@@ -961,7 +961,7 @@ module Arel
manager = Arel::SelectManager.new engine
manager.where table[:id].eq 10
manager.from table
- stmt = manager.compile_update(table[:id] => 1)
+ stmt = manager.compile_update({table[:id] => 1}, table.primary_key)
stmt.to_sql.must_be_like %{
UPDATE "users" SET "id" = 1 WHERE "users"."id" = 10
@@ -975,7 +975,7 @@ module Arel
manager.where table[:foo].eq 10
manager.take 42
manager.from table
- stmt = manager.compile_update(table[:id] => 1)
+ stmt = manager.compile_update({table[:id] => 1}, table.primary_key)
stmt.to_sql.must_be_like %{
UPDATE "users" SET "id" = 1 WHERE "users"."id" IN (SELECT "users"."id" FROM "users" WHERE "users"."foo" = 10 LIMIT 42)
@@ -987,7 +987,7 @@ module Arel
table = Table.new :users
manager = Arel::SelectManager.new engine
manager.from table
- stmt = manager.compile_update(table[:id] => 1)
+ stmt = manager.compile_update({table[:id] => 1}, table.primary_key)
stmt.to_sql.must_be_like %{
UPDATE "users" SET "id" = 1