Simplify calculation scope building. Remove :order from associations as it is troublesome w/ calculation methods using postgresql.

This commit is contained in:
Pratik Naik
2010-01-18 23:39:19 +05:30
parent 3c4186b366
commit 9e7ec2a9f1
3 changed files with 5 additions and 20 deletions

View File

@@ -164,20 +164,7 @@ module ActiveRecord
join_dependency = ActiveRecord::Associations::ClassMethods::JoinDependency.new(self, includes, construct_join(joins))
construct_finder_arel_with_included_associations(options, join_dependency)
else
relation = unscoped.apply_finder_options(options.slice(:joins, :conditions, :order, :limit, :offset, :group, :having))
if current_scoped_methods
relation = current_scoped_methods.except(:select, :order, :limit, :offset, :group, :from).merge(relation)
end
from = current_scoped_methods.from_value if current_scoped_methods && current_scoped_methods.from_value.present?
from = options[:from] if from.blank? && options[:from].present?
relation = relation.from(from)
select = options[:select].presence || (current_scoped_methods ? current_scoped_methods.select_values.join(", ") : nil)
relation = relation.select(select)
relation
scoped.apply_finder_options(options)
end
end

View File

@@ -45,7 +45,7 @@ class Firm < Company
has_many :unvalidated_clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :validate => false
has_many :dependent_clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :order => "id", :dependent => :destroy
has_many :exclusively_dependent_clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :order => "id", :dependent => :delete_all
has_many :limited_clients, :class_name => "Client", :order => "id", :limit => 1
has_many :limited_clients, :class_name => "Client", :limit => 1
has_many :clients_like_ms, :conditions => "name = 'Microsoft'", :class_name => "Client", :order => "id"
has_many :clients_with_interpolated_conditions, :class_name => "Client", :conditions => 'rating > #{rating}'
has_many :clients_like_ms_with_hash_conditions, :conditions => { :name => 'Microsoft' }, :class_name => "Client", :order => "id"
@@ -91,10 +91,8 @@ class Firm < Company
end
class DependentFirm < Company
# added order by id as in fixtures there are two accounts for Rails Core
# Oracle tests were failing because of that as the second fixture was selected
has_one :account, :foreign_key => "firm_id", :dependent => :nullify, :order => "id"
has_many :companies, :foreign_key => 'client_of', :order => "id", :dependent => :nullify
has_one :account, :foreign_key => "firm_id", :dependent => :nullify
has_many :companies, :foreign_key => 'client_of', :dependent => :nullify
end
class Client < Company

View File

@@ -25,7 +25,7 @@ class Post < ActiveRecord::Base
{ :joins => :comments, :conditions => {:comments => {:post_id => post_id} } }
}
has_many :comments, :order => "body" do
has_many :comments do
def find_most_recent
find(:first, :order => "id DESC")
end