Sha256: 04983d70517ad8f76255032b2888c4cf00e3f9a1c6d9085a76207a283b85016b

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

# BarelySearchable

This is a bare-bones almost functional "search" ability for your model layer.

It adds `.search` to your models which builds out a simple `LIKE OR` query to search your models and requires no external service to index the your tables or any index tables.

It is a terrible and slow search engine....but it'll probably work for a handful of use cases until you quit being lazy and install Sphinx.

## Installation

Add this line to your application's Gemfile: `gem 'barely_searchable'`

## Quickstart

In your model:

```
class User < ActiveRecord::Base
  #define the fields it'll search on
  searches_on :id, :username, :email, :first_name, :last_name
end
```

Now elsewhere in your application:

```
  def search_users
    @users = User.search 'user@domain.com'
  end
```

## More details:

In your models, you can specify conditions on the search parameters to exclude them from searches.  This is useful for search query optimization or selective searches.

```
class Order < ActiveRecord::Base
  #search these columns always
  searches_on :user_id, :shipping_city

  # Will only search these columns when the type-casted value isn't zero
  searches_on :subtotal, :tax, :total, unless: Proc.new{|value| value == 0}

  # Only search this column if the query is longer thahn 3 characters
  searches_on :email, if: Proc.new{|value| value.length > 3}
end
```

Search content is cast to the column data type before calling if/unless blocks.

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
barely_searchable-1.0.0 README.md