Module: SlimScrooge::FindBySql::ClassMethods

Defined in:
lib/slim_scrooge/slim_scrooge.rb

Instance Method Summary collapse

Instance Method Details

#find_by_sql_with_or_without_arel(sql, binds) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/slim_scrooge/slim_scrooge.rb', line 38

def find_by_sql_with_or_without_arel(sql, binds)
  if @@slim_use_arel
    find_by_sql_without_slim_scrooge(sql, binds)
  else
    find_by_sql_without_slim_scrooge(sql)
  end
end

#find_by_sql_with_slim_scrooge(sql, binds = []) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/slim_scrooge/slim_scrooge.rb', line 15

def find_by_sql_with_slim_scrooge(sql, binds = [])
  return find_by_sql_with_or_without_arel(sql, binds) if sql.is_a?(Array) # don't mess with user's custom query

  if @@slim_use_arel
    callsite_key = SlimScrooge::Callsites.callsite_key(sql.froms.map(&:name).join)
  else
    callsite_key = SlimScrooge::Callsites.callsite_key(sql)
  end
  
  if SlimScrooge::Callsites.has_key?(callsite_key)
    find_with_callsite_key(sql, callsite_key, binds)
  elsif callsite = SlimScrooge::Callsites.create(sql, callsite_key, name)  # new site that is scroogeable
    if @@slim_use_arel
      rows = connection.select_all(sanitize_sql(sql), "#{name} Load SlimScrooged 1st time", binds)
    else
      rows = connection.select_all(sql, "#{name} Load SlimScrooged 1st time")
    end
    rows.collect! {|row| instantiate(MonitoredHash[row, {}, callsite])}
  else
    find_by_sql_with_or_without_arel(sql, binds)
  end
end