Flowdock
method

preprocess_order_args

Importance_0
v5.2.3 - Show latest stable - 0 notes - Class: ActiveRecord::QueryMethods
preprocess_order_args(order_args) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/relation/query_methods.rb, line 1143
      def preprocess_order_args(order_args)
        order_args.map! do |arg|
          klass.sanitize_sql_for_order(arg)
        end
        order_args.flatten!

        @klass.enforce_raw_sql_whitelist(
          order_args.flat_map { |a| a.is_a?(Hash) ? a.keys : a },
          whitelist: AttributeMethods::ClassMethods::COLUMN_NAME_ORDER_WHITELIST
        )

        validate_order_args(order_args)

        references = order_args.grep(String)
        references.map! { |arg| arg =~ /^\W?(\w+)\W?\./ && $1 }.compact!
        references!(references) if references.any?

        # if a symbol is given we prepend the quoted table name
        order_args.map! do |arg|
          case arg
          when Symbol
            arg = arg.to_s
            arel_column(arg) {
              Arel.sql(connection.quote_table_name(arg))
            }.asc
          when Hash
            arg.map { |field, dir|
              case field
              when Arel::Nodes::SqlLiteral
                field.send(dir.downcase)
              else
                field = field.to_s
                arel_column(field) {
                  Arel.sql(connection.quote_table_name(field))
                }.send(dir.downcase)
              end
            }
          else
            arg
          end
        end.flatten!
      end
Register or log in to add new notes.