Skip to content

Commit

Permalink
Prevent overwriting of table name in merging SQL conditions [#2949 st…
Browse files Browse the repository at this point in the history
…ate:resolved]
  • Loading branch information
tristandunn authored and lifo committed Aug 9, 2009
1 parent b763858 commit 491f1b5
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
4 changes: 3 additions & 1 deletion activerecord/lib/active_record/base.rb
Expand Up @@ -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

Expand Down
6 changes: 6 additions & 0 deletions activerecord/test/cases/named_scope_test.rb
Expand Up @@ -332,6 +332,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
Expand Down
6 changes: 5 additions & 1 deletion 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
Expand Down

0 comments on commit 491f1b5

Please sign in to comment.