Module: SecretId::ActiveRecord::Core::ClassMethods

Defined in:
lib/secret_id/active_record.rb

Instance Method Summary collapse

Instance Method Details

#find(*ids) ⇒ Object

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



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# 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