Sha256: 7b6a43b3e11500baead13a9b54ed93b4f65b12b18e2d94d4be7d618813b394de

Contents?: true

Size: 1.05 KB

Versions: 26

Compression:

Stored size: 1.05 KB

Contents

module SimpleSearchFilter
  module Models
    module SearchableClassMethods

      def make_search_by_filter(filter, options={})
        q = self

        # collect simple conditions
        w_string = '1=1 '
        w_values = []

        filter.fields.each do |name, f|
          val = filter.v(name)
          next if f.ignore_value?(val)

          # apply fields with custom scopes first
          wscope = f.condition_scope
          if f.condition==FilterField::QUERY_CONDITION_CUSTOM && wscope.present?
            q = q.send(wscope, val)
          else
            # where
            w_field = f.make_where(val)
            next if w_field.nil?

            w_cond, w_value = w_field

            w_string << " AND #{w_cond} "
            w_values << w_value
          end
        end

        q = q.where(w_string, *w_values) if w_values

        # order
        q = q.order(filter.order_string)

        # paging
        if options[:paging].nil? || options[:paging]==true
          q = q.page(filter.page)
        end

        q
      end

    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
simple_search_filter-0.2.1 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.1.1 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.1.0 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.31 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.30 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.29 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.28 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.27 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.26 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.25 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.24 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.23 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.22 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.21 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.20 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.17 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.16 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.15 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.13 lib/simple_search_filter/models/searchable_class_methods.rb
simple_search_filter-0.0.12 lib/simple_search_filter/models/searchable_class_methods.rb