evanlok/belongs_to_hstore

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# BelongsToHstore 
[![Build Status](https://travis-ci.org/evanlok/belongs_to_hstore.png?branch=master)](https://travis-ci.org/evanlok/belongs_to_hstore) [![Gem Version](https://badge.fury.io/rb/belongs_to_hstore.png)](http://badge.fury.io/rb/belongs_to_hstore) [![Code Climate](https://codeclimate.com/github/evanlok/belongs_to_hstore.png)](https://codeclimate.com/github/evanlok/belongs_to_hstore) [![Coverage Status](https://coveralls.io/repos/evanlok/belongs_to_hstore/badge.png)](https://coveralls.io/r/evanlok/belongs_to_hstore)

Create ActiveRecord belongs_to associations using postgresql hstore columns. Compatible with polymorphic associations
and supports eager loading.

## Installation

Add this line to your application's Gemfile:

    gem 'activerecord-postgres-hstore' # Rails 3 only
    gem 'belongs_to_hstore'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install belongs_to_hstore

## Usage

Create an association using an hstore column:
```ruby
class Audit < ActiveRecord::Base
  include BelongsToHstore::Association
  serialize :properties, ActiveRecord::Coders::Hstore # Rails 3 only

  belongs_to_hstore :properties, :item
end
```

Works for polymorphic associations too:
```ruby
class Audit < ActiveRecord::Base
  include BelongsToHstore::Association
  serialize :properties, ActiveRecord::Coders::Hstore # Rails 3 only

  belongs_to_hstore :properties, :item, :polymorphic => true
end
```

Eager load hstore associations to eliminate N+1 querying:
```ruby
Audit.includes(:item).all
```

Use hstore query helpers to find records:
```ruby
Audit.where_properties(:item_id => 123)
Audit.where_properties(:item_id => [123, 456, 789])
```

## Contributing

1. Fork it
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 new Pull Request