提交 e06c06d4 编写于 作者: A Aaron Patterson

use columns hash to look up the column for the count field

上级 01149dd4
...@@ -343,7 +343,7 @@ def column_alias_for(*keys) ...@@ -343,7 +343,7 @@ def column_alias_for(*keys)
def column_for(field) def column_for(field)
field_name = field.respond_to?(:name) ? field.name.to_s : field.to_s.split('.').last field_name = field.respond_to?(:name) ? field.name.to_s : field.to_s.split('.').last
@klass.columns.detect { |c| c.name.to_s == field_name } @klass.columns_hash[field_name]
end end
def type_cast_calculated_value(value, column, operation = nil) def type_cast_calculated_value(value, column, operation = nil)
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
require 'models/organization' require 'models/organization'
require 'models/possession' require 'models/possession'
require 'models/topic' require 'models/topic'
require 'models/minivan'
require 'models/speedometer'
Company.has_many :accounts Company.has_many :accounts
...@@ -239,21 +241,12 @@ def test_should_calculate_grouped_association_with_invalid_field ...@@ -239,21 +241,12 @@ def test_should_calculate_grouped_association_with_invalid_field
end end
def test_should_group_by_association_with_non_numeric_foreign_key def test_should_group_by_association_with_non_numeric_foreign_key
ActiveRecord::Base.connection.expects(:select_all).returns([{"count_all" => 1, "firm_id" => "ABC"}]) firm = Speedometer.create! id: 'ABC'
mv = Minivan.create! id: 'OMG', speedometer_id: 'ABC'
firm = mock() c = Minivan.group(:speedometer).count(:all)
firm.expects(:id).returns("ABC")
firm.expects(:class).returns(Firm)
Company.expects(:find).with(["ABC"]).returns([firm])
column = mock()
column.expects(:name).at_least_once.returns(:firm_id)
column.expects(:type_cast).with("ABC").returns("ABC")
Account.expects(:columns).at_least_once.returns([column])
c = Account.group(:firm).count(:all)
first_key = c.keys.first first_key = c.keys.first
assert_equal Firm, first_key.class assert_equal Speedometer, first_key.class
assert_equal 1, c[first_key] assert_equal 1, c[first_key]
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册