diff options
author | Derek Kraan <derek.kraan@gmail.com> | 2013-01-11 12:29:30 -0500 |
---|---|---|
committer | Derek Kraan <derek.kraan@gmail.com> | 2013-01-11 12:31:09 -0500 |
commit | bc4edca7b178bcac4d259809e965368e30a692a8 (patch) | |
tree | 17335aa4e8be56b4b1492565fe2770ee490e5bb5 /activerecord/lib | |
parent | 7738222173e547ed92c6f85a64ececb766825cf3 (diff) | |
download | rails-bc4edca7b178bcac4d259809e965368e30a692a8.tar.gz rails-bc4edca7b178bcac4d259809e965368e30a692a8.tar.bz2 rails-bc4edca7b178bcac4d259809e965368e30a692a8.zip |
Fix .update_all and .delete_all when using a condition on a joined table
in a default_scope.
`Model.joins(...).where(condition_on_joined_table).update_all` /
`delete_all` worked, but the same operation implemented with a
default_scope generated a SQL error because ActiveRecord ignored the
join but implemented the where condition anyways.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 6ec5cf3e18..0718c5076e 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -276,7 +276,7 @@ module ActiveRecord stmt.table(table) stmt.key = table[primary_key] - if joins_values.any? + if with_default_scope.joins_values.any? @klass.connection.join_to_update(stmt, arel) else stmt.take(arel.limit) @@ -401,7 +401,7 @@ module ActiveRecord stmt = Arel::DeleteManager.new(arel.engine) stmt.from(table) - if joins_values.any? + if with_default_scope.joins_values.any? @klass.connection.join_to_delete(stmt, arel, table[primary_key]) else stmt.wheres = arel.constraints |