def where conditions, *substitutions
case conditions
when String
conditions = [replace_placeholders(conditions, *substitutions)]
when Hash
conditions = conditions.map do |name, value|
name = coerce_attribute(name)
case value
when Array
"#{name} IN " + coerce_substitution(value)
when Range
if value.exclude_end?
"(#{name} >= #{coerce_substitution(value.begin)} AND " +
"#{name} < #{coerce_substitution(value.end)})"
else
"#{name} BETWEEN #{coerce_substitution(value.begin)} AND " +
coerce_substitution(value.end)
end
else
"#{name} = " + coerce_substitution(value)
end
end
end
collection_with(:conditions => self.conditions + conditions)
end