Module: ActiveRecord::Core::ClassMethods

Defined in:
lib/composite_primary_keys/core.rb

Instance Method Summary collapse

Instance Method Details

#find(*ids) ⇒ Object

:nodoc:



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/composite_primary_keys/core.rb', line 43

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 ::ActiveRecord::RecordNotFound.new("Couldn't find #{name} with '#{key}'=#{id}", name, key, id)
  end
  record
end