Sha256: 312f2106676085ff5b1fa03ae7fd78577b55bdfbd0045504db8b32604ce70818

Contents?: true

Size: 698 Bytes

Versions: 2

Compression:

Stored size: 698 Bytes

Contents

module Ordy
  module Orm
    module ActiveRecord
      module Orderable
        class BySpecified
          # @param [Model::ActiveRecord_Relation] scope
          # @param [Hash] args (:table, :column)
          def self.call(scope, args)
            connection = scope.connection
            table = connection.quote_table_name(args[:table])
            column = connection.quote_column_name(args[:column])
            values = args[:values].map { |value| connection.quote(value) }

            sql = values.map { |value| "#{table}.#{column}=#{value} DESC" }.join(',')

            connection.quote(sql)
            scope.order(Arel.sql(sql))
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ordy-1.1.3 lib/ordy/orm/active_record/orderable/by_specified.rb
ordy-1.1.0 lib/ordy/orm/active_record/orderable/by_specified.rb