method

preprocess_order_args

Importance_0
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 2034
      def preprocess_order_args(order_args)
        @klass.disallow_raw_sql!(
          flattened_args(order_args),
          permit: model.adapter_class.column_name_with_order_matcher
        )

        validate_order_args(order_args)

        references = column_references(order_args)
        self.references_values |= references unless references.empty?

        # if a symbol is given we prepend the quoted table name
        order_args.map! do |arg|
          case arg
          when Symbol
            order_column(arg.to_s).asc
          when Hash
            arg.map do |key, value|
              if value.is_a?(Hash)
                value.map do |field, dir|
                  order_column([key.to_s, field.to_s].join(".")).public_send(dir.downcase)
                end
              else
                case key
                when Arel::Nodes::SqlLiteral, Arel::Nodes::Node, Arel::Attribute
                  key.public_send(value.downcase)
                else
                  order_column(key.to_s).public_send(value.downcase)
                end
              end
            end
          else
            arg
          end
        end.flatten!
      end
Register or log in to add new notes.