mirror of
https://github.com/github/rails.git
synced 2026-01-30 08:48:06 -05:00
Move from select * to select tablename.* to avoid clobbering IDs. Closes #8889 [dasil003]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7167 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Move from select * to select tablename.* to avoid clobbering IDs. Closes #8889 [dasil003]
|
||||
|
||||
* Don't call unsupported methods on associated objects when using :include, :method with to_xml #7307, [manfred, jwilger]
|
||||
|
||||
* Define collection singular ids method for has_many :through associations. #8763 [lifofifo]
|
||||
|
||||
@@ -53,6 +53,7 @@ module ActiveRecord
|
||||
options[:conditions] = conditions
|
||||
options[:joins] = @join_sql
|
||||
options[:readonly] = finding_with_ambigious_select?(options[:select])
|
||||
options[:select] ||= '*'
|
||||
|
||||
if options[:order] && @reflection.options[:order]
|
||||
options[:order] = "#{options[:order]}, #{@reflection.options[:order]}"
|
||||
|
||||
@@ -1109,7 +1109,7 @@ module ActiveRecord #:nodoc:
|
||||
|
||||
def construct_finder_sql(options)
|
||||
scope = scope(:find)
|
||||
sql = "SELECT #{(scope && scope[:select]) || options[:select] || '*'} "
|
||||
sql = "SELECT #{(scope && scope[:select]) || options[:select] || (options[:joins] && table_name + '.*') || '*'} "
|
||||
sql << "FROM #{(scope && scope[:from]) || options[:from] || table_name} "
|
||||
|
||||
add_joins!(sql, options, scope)
|
||||
|
||||
@@ -507,6 +507,15 @@ class FinderTest < Test::Unit::TestCase
|
||||
assert developer_names.include?('Jamis')
|
||||
end
|
||||
|
||||
def test_joins_dont_clobber_id
|
||||
first = Firm.find(
|
||||
:first,
|
||||
:joins => 'INNER JOIN companies AS clients ON clients.firm_id = companies.id',
|
||||
:conditions => 'companies.id = 1'
|
||||
)
|
||||
assert_equal 1, first.id
|
||||
end
|
||||
|
||||
def test_find_by_id_with_conditions_with_or
|
||||
assert_nothing_raised do
|
||||
Post.find([1,2,3],
|
||||
|
||||
Reference in New Issue
Block a user