Sha256: 78828808312b3621ffa2ebf0e780255dc4ce5409e98d2e3de9c5ad453763dc09

Contents?: true

Size: 433 Bytes

Versions: 1

Compression:

Stored size: 433 Bytes

Contents

require 'order_by_ids/version'
require 'order_by_ids/error'

module OrderByIds
  # Order model by array of ids.
  #
  # ==== Returns
  # * <tt>ActiveRecord</tt>
  def order_by_ids(ids)
    return order(:id) if ids.blank?

    order_by = ['CASE']
    ids.each_with_index do |id, index|
      order_by << "WHEN #{name.downcase.pluralize}.id='#{id}' THEN #{index}"
    end

    order_by << 'END'
    order(order_by.join(' '))
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
order_by_ids-0.1.0 lib/order_by_ids.rb