提交 aa140681 编写于 作者: A Aaron Patterson

explicitly pass the pk to compile_update

上级 ff8b3bcf
......@@ -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 @@ def compile_update values
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
......
......@@ -45,7 +45,7 @@ def initialize engine = FakeEngine.new
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
......
......@@ -921,7 +921,7 @@ def test_join_sources
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 @@ def test_join_sources
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 @@ def test_join_sources
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 @@ def test_join_sources
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 @@ def test_join_sources
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 @@ def test_join_sources
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册