Sha256: 2838be39ac62d7360d014bdd9a92838f2f60c614f50cd6e4b8f97e00c27f9cca

Contents?: true

Size: 1.38 KB

Versions: 3

Compression:

Stored size: 1.38 KB

Contents

class UserFilter < WillFilter::Filter

  def definition
    defs = super  
    defs[:sex][:is] = :list
    defs[:sex][:is_not] = :list
    defs
  end

  def value_options_for(criteria_key)
    if criteria_key == :sex
      return ["male", "female"]
    end

    return []
  end

  def default_filters
    [
      ["Male Only", "male_only"],
      ["Females With Last Name 'Adams'", "adams"],
      ["First Names Start With 'A'", "first_names_start_with_a"],
      ["Last Names Containing 'son'", "last_names_containing_son"],
      ["Susans Born Between 2000 and 2010", "susans"],
    ]
  end

  def default_filter_conditions(key)
    return [:sex, :is, "male"] if (key == "male_only")
    return [[:sex, :is, "female"],[:last_name, :is, "Adams"]] if (key == "adams")
    return [:first_name, :starts_with, "A"] if (key == "first_names_start_with_a")
    return [:last_name, :contains, "son"] if (key == "last_names_containing_son")
    if (key == "susans")
      return [[:first_name, :is, "Susan"], 
              [:birthday, :is_in_the_range, [Date.new(2000,1,1), Date.new(2010,1,1)]]]
    end
  end

  def order_clause
    if key == "first_names_start_with_a"
      @order = 'first_name'
      @order_type = 'asc'
    end

    if key == "last_names_containing_son"
      @order = 'last_name'
      @order_type = 'asc'
    end
    
    super
  end
  
  def default_filter_if_empty
    "male_only"
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
will_filter-3.1.3 test/dummy/app/models/user_filter.rb
will_filter-3.1.2 test/dummy/app/models/user_filter.rb
will_filter-3.1.1 test/dummy/app/models/user_filter.rb