aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/calculations_test.rb
diff options
context:
space:
mode:
authorpinglamb <pinglambs@gmail.com>2015-03-22 16:15:41 +0800
committerpinglamb <pinglambs@gmail.com>2015-03-22 16:25:23 +0800
commitba057a5ebbf93283fc7d3f3f3ffdbae2f8c76fb7 (patch)
tree27ee20c85cfbf85c8bc9b2e9dfc9bd71ee7bca91 /activerecord/test/cases/calculations_test.rb
parentfdf55619652fc5200d000241c545323c46bd6b79 (diff)
downloadrails-ba057a5ebbf93283fc7d3f3f3ffdbae2f8c76fb7.tar.gz
rails-ba057a5ebbf93283fc7d3f3f3ffdbae2f8c76fb7.tar.bz2
rails-ba057a5ebbf93283fc7d3f3f3ffdbae2f8c76fb7.zip
Fix referencing wrong aliases while joining tables of has many through
association While joining table of has_many :through association, ActiveRecord will use the actual table name instead of through-join alias. It results with a wrong SQL and exception is raised. This only happens when calculation methods like #count is called. This issue is affecting Rails 4.1.x and 4.2.x as well.
Diffstat (limited to 'activerecord/test/cases/calculations_test.rb')
-rw-r--r--activerecord/test/cases/calculations_test.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/activerecord/test/cases/calculations_test.rb b/activerecord/test/cases/calculations_test.rb
index f0393aa6b1..8fc996ee74 100644
--- a/activerecord/test/cases/calculations_test.rb
+++ b/activerecord/test/cases/calculations_test.rb
@@ -11,6 +11,10 @@ require 'models/minivan'
require 'models/speedometer'
require 'models/ship_part'
require 'models/treasure'
+require 'models/developer'
+require 'models/comment'
+require 'models/rating'
+require 'models/post'
class NumericData < ActiveRecord::Base
self.table_name = 'numeric_data'
@@ -636,4 +640,11 @@ class CalculationsTest < ActiveRecord::TestCase
Client.update_all(client_of: nil)
assert_equal({ nil => Client.count }, Client.group(:firm).count)
end
+
+ def test_should_reference_correct_aliases_while_joining_tables_of_has_many_through_association
+ assert_nothing_raised ActiveRecord::StatementInvalid do
+ developer = Developer.create!(name: 'developer')
+ developer.ratings.includes(comment: :post).where(posts: { id: 1 }).count
+ end
+ end
end