aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/models/developer.rb
diff options
context:
space:
mode:
authorDerek Kraan <derek.kraan@gmail.com>2013-01-11 12:29:30 -0500
committerDerek Kraan <derek.kraan@gmail.com>2013-01-11 12:31:09 -0500
commitbc4edca7b178bcac4d259809e965368e30a692a8 (patch)
tree17335aa4e8be56b4b1492565fe2770ee490e5bb5 /activerecord/test/models/developer.rb
parent7738222173e547ed92c6f85a64ececb766825cf3 (diff)
downloadrails-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/developer.rb')
-rw-r--r--activerecord/test/models/developer.rb9
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') }