mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-06 09:03:25 +00:00
Dangerous query method deprecation warnings (#23630).
git-svn-id: http://svn.redmine.org/redmine/trunk@17411 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
ce1c652250
commit
d8a2024715
@ -780,14 +780,16 @@ class Query < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def sort_clause
|
||||
sort_criteria.sort_clause(sortable_columns)
|
||||
if clause = sort_criteria.sort_clause(sortable_columns)
|
||||
clause.map {|c| Arel.sql c}
|
||||
end
|
||||
end
|
||||
|
||||
# Returns the SQL sort order that should be prepended for grouping
|
||||
def group_by_sort_order
|
||||
if column = group_by_column
|
||||
order = (sort_criteria.order_for(column.name) || column.default_order || 'asc').try(:upcase)
|
||||
Array(column.sortable).map {|s| "#{s} #{order}"}
|
||||
Array(column.sortable).map {|s| Arel.sql("#{s} #{order}")}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -317,7 +317,7 @@ class Version < ActiveRecord::Base
|
||||
|
||||
def self.fields_for_order_statement(table=nil)
|
||||
table ||= table_name
|
||||
["(CASE WHEN #{table}.effective_date IS NULL THEN 1 ELSE 0 END)", "#{table}.effective_date", "#{table}.name", "#{table}.id"]
|
||||
[Arel.sql("(CASE WHEN #{table}.effective_date IS NULL THEN 1 ELSE 0 END)"), "#{table}.effective_date", "#{table}.name", "#{table}.id"]
|
||||
end
|
||||
|
||||
scope :sorted, lambda { order(fields_for_order_statement) }
|
||||
|
||||
@ -323,7 +323,7 @@ module Redmine
|
||||
# Returns nil if the custom field can not be used for sorting.
|
||||
def order_statement(custom_field)
|
||||
# COALESCE is here to make sure that blank and NULL values are sorted equally
|
||||
"COALESCE(#{join_alias custom_field}.value, '')"
|
||||
Arel.sql "COALESCE(#{join_alias custom_field}.value, '')"
|
||||
end
|
||||
|
||||
# Returns a GROUP BY clause that can used to group by custom value
|
||||
@ -461,7 +461,7 @@ module Redmine
|
||||
# Make the database cast values into numeric
|
||||
# Postgresql will raise an error if a value can not be casted!
|
||||
# CustomValue validations should ensure that it doesn't occur
|
||||
"CAST(CASE #{join_alias custom_field}.value WHEN '' THEN '0' ELSE #{join_alias custom_field}.value END AS decimal(30,3))"
|
||||
Arel.sql "CAST(CASE #{join_alias custom_field}.value WHEN '' THEN '0' ELSE #{join_alias custom_field}.value END AS decimal(30,3))"
|
||||
end
|
||||
|
||||
# Returns totals for the given scope
|
||||
@ -747,7 +747,7 @@ module Redmine
|
||||
end
|
||||
|
||||
def group_statement(custom_field)
|
||||
"COALESCE(#{join_alias custom_field}.value, '')"
|
||||
Arel.sql "COALESCE(#{join_alias custom_field}.value, '')"
|
||||
end
|
||||
|
||||
def join_for_order_statement(custom_field)
|
||||
|
||||
@ -97,7 +97,7 @@ module Redmine
|
||||
if criterion =~ / (asc|desc)$/i
|
||||
criterion
|
||||
else
|
||||
"#{criterion} #{order.to_s.upcase}"
|
||||
Arel.sql "#{criterion} #{order.to_s.upcase}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1483,7 +1483,8 @@ class QueryTest < ActiveSupport::TestCase
|
||||
c = q.available_columns.find {|col| col.is_a?(QueryCustomFieldColumn) && col.custom_field.field_format == 'string' }
|
||||
assert c
|
||||
assert c.sortable
|
||||
issues = q.issues(:order => "#{c.sortable} ASC")
|
||||
q.sort_criteria = [[c.name.to_s, 'asc']]
|
||||
issues = q.issues
|
||||
values = issues.collect {|i| i.custom_value_for(c.custom_field).to_s}
|
||||
assert !values.empty?
|
||||
assert_equal values.sort, values
|
||||
@ -1494,7 +1495,8 @@ class QueryTest < ActiveSupport::TestCase
|
||||
c = q.available_columns.find {|col| col.is_a?(QueryCustomFieldColumn) && col.custom_field.field_format == 'string' }
|
||||
assert c
|
||||
assert c.sortable
|
||||
issues = q.issues(:order => "#{c.sortable} DESC")
|
||||
q.sort_criteria = [[c.name.to_s, 'desc']]
|
||||
issues = q.issues
|
||||
values = issues.collect {|i| i.custom_value_for(c.custom_field).to_s}
|
||||
assert !values.empty?
|
||||
assert_equal values.sort.reverse, values
|
||||
@ -1505,7 +1507,8 @@ class QueryTest < ActiveSupport::TestCase
|
||||
c = q.available_columns.find {|col| col.is_a?(QueryCustomFieldColumn) && col.custom_field.field_format == 'float' }
|
||||
assert c
|
||||
assert c.sortable
|
||||
issues = q.issues(:order => "#{c.sortable} ASC")
|
||||
q.sort_criteria = [[c.name.to_s, 'asc']]
|
||||
issues = q.issues
|
||||
values = issues.collect {|i| begin; Kernel.Float(i.custom_value_for(c.custom_field).to_s); rescue; nil; end}.compact
|
||||
assert !values.empty?
|
||||
assert_equal values.sort, values
|
||||
@ -1703,9 +1706,9 @@ class QueryTest < ActiveSupport::TestCase
|
||||
|
||||
def test_issue_ids
|
||||
q = IssueQuery.new(:name => '_')
|
||||
order = "issues.subject, issues.id"
|
||||
issues = q.issues(:order => order)
|
||||
assert_equal issues.map(&:id), q.issue_ids(:order => order)
|
||||
q.sort_criteria = ['subject', 'id']
|
||||
issues = q.issues
|
||||
assert_equal issues.map(&:id), q.issue_ids
|
||||
end
|
||||
|
||||
def test_label_for
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user