aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/associations')
-rw-r--r--activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb4
-rw-r--r--activerecord/lib/active_record/associations/has_many_association.rb8
-rw-r--r--activerecord/lib/active_record/associations/has_one_association.rb2
3 files changed, 8 insertions, 6 deletions
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