Adding :from scoping to ActiveRecord calculations
Signed-off-by: Michael Koziarski <michael@koziarski.com> [#1229 state:committed]
This commit is contained in:
parent
1f6afe4a74
commit
3b3798506b
|
@ -197,6 +197,8 @@ module ActiveRecord
|
||||||
sql << ", #{options[:group_field]} AS #{options[:group_alias]}" if options[:group]
|
sql << ", #{options[:group_field]} AS #{options[:group_alias]}" if options[:group]
|
||||||
if options[:from]
|
if options[:from]
|
||||||
sql << " FROM #{options[:from]} "
|
sql << " FROM #{options[:from]} "
|
||||||
|
elsif scope && scope[:from]
|
||||||
|
sql << " FROM #{scope[:from]} "
|
||||||
else
|
else
|
||||||
sql << " FROM (SELECT #{distinct}#{column_name}" if use_workaround
|
sql << " FROM (SELECT #{distinct}#{column_name}" if use_workaround
|
||||||
sql << " FROM #{connection.quote_table_name(table_name)} "
|
sql << " FROM #{connection.quote_table_name(table_name)} "
|
||||||
|
|
|
@ -2,6 +2,8 @@ require "cases/helper"
|
||||||
require 'models/company'
|
require 'models/company'
|
||||||
require 'models/topic'
|
require 'models/topic'
|
||||||
require 'models/edge'
|
require 'models/edge'
|
||||||
|
require 'models/club'
|
||||||
|
require 'models/organization'
|
||||||
|
|
||||||
Company.has_many :accounts
|
Company.has_many :accounts
|
||||||
|
|
||||||
|
@ -223,6 +225,10 @@ class CalculationsTest < ActiveRecord::TestCase
|
||||||
assert_equal 15, companies(:rails_core).companies.sum(:id)
|
assert_equal 15, companies(:rails_core).companies.sum(:id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_should_sum_scoped_field_with_from
|
||||||
|
assert_equal Club.count, Organization.clubs.count
|
||||||
|
end
|
||||||
|
|
||||||
def test_should_sum_scoped_field_with_conditions
|
def test_should_sum_scoped_field_with_conditions
|
||||||
assert_equal 8, companies(:rails_core).companies.sum(:id, :conditions => 'id > 7')
|
assert_equal 8, companies(:rails_core).companies.sum(:id, :conditions => 'id > 7')
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
class Organization < ActiveRecord::Base
|
class Organization < ActiveRecord::Base
|
||||||
has_many :member_details
|
has_many :member_details
|
||||||
has_many :members, :through => :member_details
|
has_many :members, :through => :member_details
|
||||||
|
|
||||||
|
named_scope :clubs, { :from => 'clubs' }
|
||||||
end
|
end
|
Loading…
Reference in New Issue