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/test/models | |
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/test/models')
-rw-r--r-- | activerecord/test/models/developer.rb | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/activerecord/test/models/developer.rb b/activerecord/test/models/developer.rb index 683cb54a10..81bc87bd42 100644 --- a/activerecord/test/models/developer.rb +++ b/activerecord/test/models/developer.rb @@ -101,6 +101,15 @@ class DeveloperWithIncludes < ActiveRecord::Base default_scope { includes(:audit_logs) } end +class DeveloperFilteredOnJoins < ActiveRecord::Base + self.table_name = 'developers' + has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects' + + def self.default_scope + joins(:projects).where(:projects => { :name => 'Active Controller' }) + end +end + class DeveloperOrderedBySalary < ActiveRecord::Base self.table_name = 'developers' default_scope { order('salary DESC') } |