module SecretId::ActiveRecord::Core::ClassMethods

Public Instance Methods

find(*ids) click to toggle source

Override ActiveRecord::Core#find decoding ids, if is necessary

Calls superclass method
# File lib/secret_id/active_record.rb, line 61
def find(*ids)
  if ids.length == 1
    return super if ids.first.kind_of?(Array)
  else
    options = ids.slice!(ids.size - 1) if ids.last.kind_of?(Hash)
    options ||= {}

    return super ids, secret_id: false if options[:secret_id] === false
    return super if ids.first.kind_of?(Array)
  end

  ids.map! do |id|
    begin
      decode_id(id)
    rescue
      raise ::ActiveRecord::RecordNotFound, "Couldn't find #{self.name} with secret id=#{id}"
    end
  end

  return super ids, secret_id: false
end