class QuerySet::Query
Constants
- LEFT
- RIGHT
Attributes
params[R]
sql[R]
Public Class Methods
new(str)
click to toggle source
# File lib/query_set.rb, line 34 def initialize(str) @sql = '' @params = [] compile(str) @sql.freeze @params.freeze end
Public Instance Methods
execute(conn, args = {})
click to toggle source
# File lib/query_set.rb, line 44 def execute(conn, args = {}) conn.exec_params(sql, args.values_at(*params)) end
Private Instance Methods
compile(str)
click to toggle source
# File lib/query_set.rb, line 50 def compile(str) terms = str.split(regexp) while (term = terms.shift) case term when left param = terms.shift.to_sym # Capture the param for execute position. params << param # Append a 1-based placeholder for the param to the sql string. sql << "$#{params.index(param).succ}" else sql << term end end # Only remember the unique parameters. params.uniq! end
left()
click to toggle source
# File lib/query_set.rb, line 72 def left LEFT end
regexp()
click to toggle source
# File lib/query_set.rb, line 80 def regexp /(#{left})\s*(.*?)\s*#{right}/ end
right()
click to toggle source
# File lib/query_set.rb, line 76 def right RIGHT end