lib/searchlogic/named_scopes/conditions.rb in binarylogic-searchlogic-2.3.0 vs lib/searchlogic/named_scopes/conditions.rb in binarylogic-searchlogic-2.3.1
- old
+ new
@@ -28,11 +28,13 @@
}
BOOLEAN_CONDITIONS = {
:null => [:nil],
:not_null => [:not_nil],
- :empty => []
+ :empty => [],
+ :blank => [],
+ :not_blank => [:present]
}
CONDITIONS = {}
# Add any / all variations to every comparison and wildcard condition
@@ -115,10 +117,14 @@
{:conditions => "#{table_name}.#{column} IS NULL"}
when "not_null"
{:conditions => "#{table_name}.#{column} IS NOT NULL"}
when "empty"
{:conditions => "#{table_name}.#{column} = ''"}
+ when "blank"
+ {:conditions => "#{table_name}.#{column} = '' OR #{table_name}.#{column} IS NULL"}
+ when "not_blank"
+ {:conditions => "#{table_name}.#{column} != '' OR #{table_name}.#{column} IS NOT NULL"}
end
named_scope("#{column}_#{condition}".to_sym, scope_options)
end
@@ -128,10 +134,10 @@
def scope_options(condition, column_type, sql, value_modifier = nil)
case condition.to_s
when /_(any|all)$/
searchlogic_lambda(column_type) { |*values|
return {} if values.empty?
-
+ values.flatten!
values.collect! { |value| value_with_modifier(value, value_modifier) }
join = $1 == "any" ? " OR " : " AND "
scope_sql = values.collect { |value| sql.is_a?(Proc) ? sql.call(value) : sql }.join(join)