Module: SlimScrooge::FindBySql::ClassMethods

Defined in:
lib/slim_scrooge/slim_scrooge.rb

Instance Method Summary collapse

Instance Method Details

#find_by_sql_with_slim_scrooge(sql) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/slim_scrooge/slim_scrooge.rb', line 13

def find_by_sql_with_slim_scrooge(sql)
  return find_by_sql_without_slim_scrooge(sql) if sql.is_a?(Array) # don't mess with user's custom query
  callsite_key = SlimScrooge::Callsites.callsite_key(sql)
  if SlimScrooge::Callsites.has_key?(callsite_key)
    find_with_callsite_key(sql, callsite_key)
  elsif callsite = SlimScrooge::Callsites.create(sql, callsite_key, name)  # new site that is scroogeable
    rows = connection.select_all(sql, "#{name} Load SlimScrooged 1st time")
    rows.collect! {|row| instantiate(MonitoredHash[row, {}, callsite])}
  else
    find_by_sql_without_slim_scrooge(sql)
  end
end