class Bartleby::Relation
Public Class Methods
new(model_class_name)
click to toggle source
# File lib/bartleby/relation.rb, line 5 def initialize(model_class_name) @model_class_name = model_class_name @cache = nil initialize_select_field end
Public Instance Methods
[](index)
click to toggle source
# File lib/bartleby/relation.rb, line 72 def [](index) load if @cache.nil? @cache[index] end
each(&prc)
click to toggle source
# File lib/bartleby/relation.rb, line 77 def each(&prc) load if @cache.nil? @cache.each(&prc) end
execute_query()
click to toggle source
# File lib/bartleby/relation.rb, line 11 def execute_query Connection.execute(query, params) end
from_field()
click to toggle source
# File lib/bartleby/relation.rb, line 50 def from_field @from_field ||= { model_class.table_name } end
generate_select_field()
click to toggle source
# File lib/bartleby/relation.rb, line 44 def generate_select_field select = [] select_field.each { |table, column| select.push "#{table}.#{column}"} select.join(", ") end
having_field()
click to toggle source
# File lib/bartleby/relation.rb, line 64 def having_field @having_field ||= {} end
load()
click to toggle source
# File lib/bartleby/relation.rb, line 82 def load @cache = query_results end
model_class()
click to toggle source
# File lib/bartleby/relation.rb, line 15 def model_class Object.constant_get(@model_class_name) end
params()
click to toggle source
# File lib/bartleby/relation.rb, line 68 def params @params ||= {} end
parse(results)
click to toggle source
# File lib/bartleby/relation.rb, line 86 def parse(results) results.map { |result| model_class.new(result) } end
query()
click to toggle source
# File lib/bartleby/relation.rb, line 23 def query <<-SQL SELECT #{generate_select_field} FROM #{generate_from_field} SQL #{generate_joins} #{generate_where_field} #{generate_group_by_field} #{generate_having_field} end
query_results()
click to toggle source
# File lib/bartleby/relation.rb, line 19 def query_results parse(execute_query) end
select(options = {})
click to toggle source
# File lib/bartleby/relation.rb, line 36 def select(options = {}) end
select_field()
click to toggle source
# File lib/bartleby/relation.rb, line 40 def select_field @select_field ||= { model_class.table_name => :* } end
where_field()
click to toggle source
# File lib/bartleby/relation.rb, line 54 def where_field @where_field ||= {} end