class Diary::Query::Where
Public Class Methods
new(*conditions)
click to toggle source
convert conditions to AND'd list returns either string or (string, bind_params) 2-tuple
# File lib/diary-ruby/database/query.rb, line 198 def initialize(*conditions) @sql_result = if Hash === conditions[0] attrs = conditions[0] keys = attrs.keys vals = keys.map {|k| attrs[k]} and_string = keys.map do |k| if attrs[k].is_a?(Array) bind_hold = attrs[k].map {|_| '?'}.join(',') "`#{k}` in (#{bind_hold})" else "`#{k}` = ?" end end.join(' AND ') # (string, bind) SQLBoundParams.new(and_string, vals.flatten) elsif conditions.size > 1 && String === conditions[0] # assume (string, bind) given SQLBoundParams.new(conditions[0], conditions[1..-1]) elsif conditions.size == 1 && String === conditions[0] SQLString.new(conditions[0]) end end