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)