BelongsToHstore
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:
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:
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:
Audit.includes(:item).all
Use hstore query helpers to find records:
Audit.where_properties(:item_id => 123)
Audit.where_properties(:item_id => [123, 456, 789])
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request