diff options
-rw-r--r-- | lib/arel/crud.rb | 4 | ||||
-rw-r--r-- | test/test_crud.rb | 2 | ||||
-rw-r--r-- | test/test_select_manager.rb | 12 |
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 |