A very simple ActiveRecord search pattern
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
.gitignore
Gemfile
LICENSE.txt
README.md
Rakefile
simple_searchable.gemspec

README.md

SimpleSearchable

This gem adds the utility methods for a basic ActiveRecord search/filtering pattern.

Installation

Add this line to your application's Gemfile:

gem 'simple_searchable'

And then execute:

$ bundle

Usage

To use, bundle the gem with your project and call searchable_by from your model(s):

class Religion < ActiveRecord::Base
  searchable_by :monotheiestic, :originated_in
  
  def self.originated_in(continents)
    where(originating_continent: continents)
  end
  
  def self.monotheistic(true_false)
    where(monotheistic: true_false)
  end
end

Now write a search form which uses the method names as parameter keys:

<%= form_tag religions_path do %>
  <%= fields_for :religion_filters do |f| %>
    <%= f.label do %>
      Monotheistic? <%= f.check_box :monotheistic, {}, true, false %>
    <% end %>
  
    <%= f.label :originated_in, "Originated" %>
    <%= f.select :originated_in, LOCATIONS %>
  <% end %>

  <%= submit_tag "Search Religions" %>
<% end %>

And get your controller to use search:

class ReligionsController < ApplicationController
  def index
    @religions = Religion.search(params[:religion_filters])
  end
end

If you want to add a new filter, add the scope to the AR class and list it in searchable_by, then add an input to your form.

Contributing

  1. Fork it ( https://github.com/meritec/simple_searchable/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request