Skip to content
Browse files

Prevent overwriting of table name in merging SQL conditions [#2949 st…

…ate:resolved]
  • Loading branch information...
1 parent 00d6c76 commit 0472839d684d836e1e7ecd39722c313410d76d5b @tristandunn tristandunn committed with lifo Aug 10, 2009
View
4 activerecord/lib/active_record/base.rb
@@ -2294,10 +2294,12 @@ def expand_hash_conditions_for_aggregates(attrs)
# And for value objects on a composed_of relationship:
# { :address => Address.new("123 abc st.", "chicago") }
# # => "address_street='123 abc st.' and address_city='chicago'"
- def sanitize_sql_hash_for_conditions(attrs, table_name = quoted_table_name)
+ def sanitize_sql_hash_for_conditions(attrs, default_table_name = quoted_table_name)
attrs = expand_hash_conditions_for_aggregates(attrs)
conditions = attrs.map do |attr, value|
+ table_name = default_table_name
+
unless value.is_a?(Hash)
attr = attr.to_s
View
6 activerecord/test/cases/named_scope_test.rb
@@ -368,6 +368,12 @@ def test_named_scopes_batch_finders
end
end
end
+
+ def test_table_names_for_chaining_scopes_with_and_without_table_name_included
+ assert_nothing_raised do
+ Comment.for_first_post.for_first_author.all
+ end
+ end
end
class DynamicScopeMatchTest < ActiveRecord::TestCase
View
6 activerecord/test/models/comment.rb
@@ -1,6 +1,10 @@
class Comment < ActiveRecord::Base
named_scope :containing_the_letter_e, :conditions => "comments.body LIKE '%e%'"
-
+ named_scope :for_first_post, :conditions => { :post_id => 1 }
+ named_scope :for_first_author,
+ :joins => :post,
+ :conditions => { "posts.author_id" => 1 }
+
belongs_to :post, :counter_cache => true
def self.what_are_you

0 comments on commit 0472839

Please sign in to comment.
Something went wrong with that request. Please try again.