提交 00f3f6dc 编写于 作者: P Pratik Naik

Relation#merge and Relation#except should respect locks

上级 3db876cb
......@@ -24,7 +24,8 @@ def merge(r)
offset(arel.skipped).
select(arel.send(:select_clauses)).
from(arel.sources).
having(arel.havings)
having(arel.havings).
lock(arel.locked)
end
relation_order = r.send(:order_clause)
......@@ -65,6 +66,7 @@ def except(*skips)
result = result.order(order_clause) unless skips.include?(:order)
result = result.where(*@relation.wheres) unless skips.include?(:where)
result = result.having(*@relation.havings) unless skips.include?(:having)
result = result.lock(@relation.locked) unless skips.include?(:lock)
result
end
......
......@@ -407,6 +407,11 @@ def test_relation_merging_with_eager_load
end
end
def test_relation_merging_with_locks
devs = Developer.lock.where("salary >= 80000").order("id DESC") & Developer.limit(2)
assert devs.locked.present?
end
def test_relation_merging_with_preload
[Post.scoped & Post.preload(:author), Post.preload(:author) & Post.scoped].each do |posts|
assert_queries(2) { assert posts.first.author }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册