class CodeKindly::Utils::SQL
Public Class Methods
method_missing(method, *args)
click to toggle source
Calls superclass method
# File lib/code_kindly/utils/sql.rb, line 9 def method_missing(method, *args) m_name = method.to_s return process(m_name, *args) if respond_to_missing?(m_name) select_mn = 'select_' + m_name return process(select_mn, *args) if respond_to_missing?(select_mn) super end
respond_to_missing?(method, _include_all = false)
click to toggle source
# File lib/code_kindly/utils/sql.rb, line 17 def respond_to_missing?(method, _include_all = false) return false unless default_connection_class default_connection_class.connection.respond_to?(method) end
Protected Class Methods
default_connection_class()
click to toggle source
# File lib/code_kindly/utils/sql.rb, line 24 def default_connection_class @default_connection_class ||= begin CodeKindly::Utils::ActiveRecord.default_connection_class end end
process(method_name, query, connection_class = NilClass)
click to toggle source
# File lib/code_kindly/utils/sql.rb, line 30 def process(method_name, query, connection_class = NilClass) connection_class = find_connection_class(query, connection_class) query = query.to_sql if query.is_a?(::ActiveRecord::Relation) connection_class.connection.send(method_name, query) end
Private Class Methods
find_connection_class(query, klass)
click to toggle source
# File lib/code_kindly/utils/sql.rb, line 38 def find_connection_class(query, klass) return query.klass if query.is_a?(::ActiveRecord::Relation) if klass.respond_to? :to_sym klass = CodeKindly::Utils::ActiveRecord.default_connection_class(klass) else klass = klass.class unless klass.is_a?(Class) klass = NilClass if klass < ::ActiveRecord::Base end klass = default_connection_class if klass == NilClass klass end