Pass the order option as an array to satisfy sqlserver adapter (#12713).

Unlike other adapters, the sqlserver adapter processes the order option and wipes it when using functions.
Here we can see a "ASC" inserted in the COALESCE call:

irb(main):001:0> Issue.order("coalesce(estimated_hours, 0), id").to_sql
=> "SELECT [issues].* FROM [issues] ORDER BY coalesce(estimated_hours ASC, 0) ASC, id ASC"

This does not happen when passing the order SQL fragments separately.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11115 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2013-01-04 10:04:25 +00:00
parent 0337d9abc3
commit a8083fb9a8
3 changed files with 13 additions and 14 deletions
+3 -2
View File
@@ -80,12 +80,13 @@ module SortHelper
@criteria.collect {|k,o| k + (o ? '' : ':desc')}.join(',')
end
# Returns an array of SQL fragments used to sort the list
def to_sql
sql = @criteria.collect do |k,o|
if s = @available_criteria[k]
(o ? s.to_a : s.to_a.collect {|c| append_desc(c)}).join(', ')
(o ? s.to_a : s.to_a.collect {|c| append_desc(c)})
end
end.compact.join(', ')
end.flatten.compact
sql.blank? ? nil : sql
end