From 328ef3feaad4c110a7277e3432e9203c7fbbb9e2 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Tue, 18 Oct 2005 23:52:07 +0000 Subject: Parenthesize :conditions git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2681 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/lib/active_record/associations.rb | 4 ++-- .../associations/has_and_belongs_to_many_association.rb | 4 ++-- .../lib/active_record/associations/has_many_association.rb | 8 ++++---- .../lib/active_record/associations/has_one_association.rb | 2 ++ activerecord/lib/active_record/base.rb | 4 ++-- 5 files changed, 12 insertions(+), 10 deletions(-) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index cf015f89db..87080bf0da 100755 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -296,8 +296,8 @@ module ActiveRecord options.assert_valid_keys( :foreign_key, :class_name, :exclusively_dependent, :dependent, :conditions, :order, :finder_sql, :counter_sql, - :before_add, :after_add, :before_remove, :after_remove - ) + :before_add, :after_add, :before_remove, :after_remove + ) association_name, association_class_name, association_class_primary_key_name = associate_identification(association_id, options[:class_name], options[:foreign_key]) diff --git a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb index 04774fa28a..1fab50418a 100644 --- a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +++ b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb @@ -41,7 +41,7 @@ module ActiveRecord else conditions = "#{@finder_sql}" if sanitized_conditions = sanitize_sql(options[:conditions]) - conditions << " AND #{sanitized_conditions}" + conditions << " AND (#{sanitized_conditions})" end options[:conditions] = conditions options[:joins] = @join_sql @@ -141,7 +141,7 @@ module ActiveRecord @finder_sql = @options[:finder_sql] else @finder_sql = "#{@join_table}.#{@association_class_primary_key_name} = #{@owner.quoted_id} " - @finder_sql << " AND #{interpolate_sql(@options[:conditions])}" if @options[:conditions] + @finder_sql << " AND (#{interpolate_sql(@options[:conditions])})" if @options[:conditions] end @join_sql = "LEFT JOIN #{@join_table} ON #{@association_class.table_name}.#{@association_class.primary_key} = #{@join_table}.#{@association_foreign_key}" diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb index 114f84ed5d..f5f27dc410 100644 --- a/activerecord/lib/active_record/associations/has_many_association.rb +++ b/activerecord/lib/active_record/associations/has_many_association.rb @@ -26,7 +26,7 @@ module ActiveRecord records = @association_class.find_by_sql(@finder_sql) else sql = @finder_sql - sql += " AND #{sanitize_sql(runtime_conditions)}" if runtime_conditions + sql += " AND (#{sanitize_sql(runtime_conditions)})" if runtime_conditions orderings ||= @options[:order] records = @association_class.find_all(sql, orderings, limit, joins) end @@ -45,7 +45,7 @@ module ActiveRecord @association_class.count_by_sql(@finder_sql) else sql = @finder_sql - sql += " AND #{sanitize_sql(runtime_conditions)}" if runtime_conditions + sql += " AND (#{sanitize_sql(runtime_conditions)})" if runtime_conditions @association_class.count(sql) end end @@ -137,7 +137,7 @@ module ActiveRecord @finder_sql = interpolate_sql(@options[:finder_sql]) else @finder_sql = "#{@association_class.table_name}.#{@association_class_primary_key_name} = #{@owner.quoted_id}" - @finder_sql << " AND #{interpolate_sql(@conditions)}" if @conditions + @finder_sql << " AND (#{interpolate_sql(@conditions)})" if @conditions end if @options[:counter_sql] @@ -147,7 +147,7 @@ module ActiveRecord @counter_sql = interpolate_sql(@options[:counter_sql]) else @counter_sql = "#{@association_class.table_name}.#{@association_class_primary_key_name} = #{@owner.quoted_id}" - @counter_sql << " AND #{interpolate_sql(@conditions)}" if @conditions + @counter_sql << " AND (#{interpolate_sql(@conditions)})" if @conditions end end end diff --git a/activerecord/lib/active_record/associations/has_one_association.rb b/activerecord/lib/active_record/associations/has_one_association.rb index 1ff67ff70a..18f84ee98f 100644 --- a/activerecord/lib/active_record/associations/has_one_association.rb +++ b/activerecord/lib/active_record/associations/has_one_association.rb @@ -66,6 +66,8 @@ module ActiveRecord def construct_sql @finder_sql = "#{@association_class.table_name}.#{@association_class_primary_key_name} = #{@owner.quoted_id}#{@options[:conditions] ? " AND " + @options[:conditions] : ""}" + @finder_sql << " AND (#{sanitize_sql(@options[:conditions])})" if @options[:conditions] + @finder_sql end end end diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 58f884595c..5d594c61a6 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -893,8 +893,8 @@ module ActiveRecord #:nodoc: condition_segments = [scope_constraints[:conditions]] condition_segments << sanitize_sql(conditions) unless conditions.nil? condition_segments << type_condition unless descends_from_active_record? - condition_segments.compact! - sql << "WHERE #{condition_segments.join(" AND ")} " unless condition_segments.empty? + condition_segments.compact! + sql << "WHERE (#{condition_segments.join(") AND (")}) " unless condition_segments.empty? end def type_condition -- cgit v1.2.3