Sha256: 40921399430f93af4dd794b271f46a9c31684a8bfb5619616b18dbbe045f10d8

Contents?: true

Size: 1006 Bytes

Versions: 8

Compression:

Stored size: 1006 Bytes

Contents

# Adapter for the `ransack` gem.
class RESTFramework::Filters::RansackFilter < RESTFramework::Filters::BaseFilter
  # Filter data according to the request query parameters.
  def get_filtered_data(data)
    q = @controller.request.query_parameters[@controller.ransack_query_param]

    if q.present?
      distinct = @controller.ransack_distinct

      # Determine if `distinct` is determined by query param.
      if distinct_query_param = @controller.ransack_distinct_query_param
        if distinct_query = @controller.request.query_parameters[distinct_query_param].presence
          distinct_from_query = ActiveRecord::Type::Boolean.new.cast(distinct_query)
          unless distinct_from_query.nil?
            distinct = distinct_from_query
          end
        end
      end

      return data.ransack(q, @controller.ransack_options || {}).result(distinct: distinct)
    end

    return data
  end
end

# Alias for convenience.
RESTFramework::RansackFilter = RESTFramework::Filters::RansackFilter

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rest_framework-0.9.15 lib/rest_framework/filters/ransack_filter.rb
rest_framework-0.9.14 lib/rest_framework/filters/ransack_filter.rb
rest_framework-0.9.12.pre.1.pre.g39306cb lib/rest_framework/filters/ransack_filter.rb
rest_framework-0.9.11.pre.40.pre.g5dcad32 lib/rest_framework/filters/ransack_filter.rb
rest_framework-0.9.11 lib/rest_framework/filters/ransack_filter.rb
rest_framework-0.9.10 lib/rest_framework/filters/ransack_filter.rb
rest_framework-0.9.9 lib/rest_framework/filters/ransack_filter.rb
rest_framework-0.9.8 lib/rest_framework/filters/ransack_filter.rb