Module: ActiveRecord::Core::ClassMethods

Defined in:
lib/composite_primary_keys/core.rb

Instance Method Summary collapse

Instance Method Details

#find(*ids) ⇒ Object

:nodoc:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/composite_primary_keys/core.rb', line 20

def find(*ids) # :nodoc:
  # We don't have cache keys for this stuff yet
  return super unless ids.length == 1
  return super if block_given? ||
      primary_key.nil? ||
      scope_attributes? ||
      columns_hash.key?(inheritance_column) && !base_class?

  # CPK
  return super if self.composite?

  id = ids.first

  return super if StatementCache.unsupported_value?(id)

  key = primary_key

  statement = cached_find_by_statement(key) { |params|
    where(key => params.bind).limit(1)
  }

  record = statement.execute([id], connection)&.first
  unless record
    raise RecordNotFound.new("Couldn't find #{name} with '#{key}'=#{id}", name, key, id)
  end
  record
end