Module: EncodedId::Rails::QueryMethods

Defined in:
lib/encoded_id/rails/query_methods.rb

Overview

Provides query methods for finding records using encoded IDs in where clauses.

Instance Method Summary collapse

Instance Method Details

#where_encoded_id(*slugged_encoded_ids) ⇒ Object

Raises:

  • (::ActiveRecord::RecordNotFound)


15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/encoded_id/rails/query_methods.rb', line 15

def where_encoded_id(*slugged_encoded_ids)
  slugged_encoded_ids = slugged_encoded_ids.flatten

  raise ::ActiveRecord::RecordNotFound if slugged_encoded_ids.empty?

  decoded_ids = slugged_encoded_ids.flat_map do |slugged_encoded_id|
    decode_encoded_id(slugged_encoded_id).tap do |decoded_id|
      raise ::ActiveRecord::RecordNotFound if decoded_id.nil?
    end
  end

  where(id: decoded_ids)
end