Postgres array support for activerecord

Add basic support for postgres arrays to activerecord, with special attention to getting rails migrations / schema dumps working nicely.

Installation

gem install activerecord-postgres-array

or if you use bundler

gem 'activerecord-postgres-array'

Usage

  • In your migrations you can define postgres array fields such as:
    create_table :people do |t|
      ...
      t.string_array :real_energy
      t.decimal_array :real_energy, :precision => 18, :scale => 6
      ...
    end
    
  • When queried, the postgres arrays will be returned as ruby arrays, and vice versa.

Compatibility with activerecord-postgres-hstore

Note

As of activerecord-postgres-hstore ‘0.7.0’, ActiveRecord::Base#arel_attributes_value is not monkey patched and therefore does not interfere with loading of this gem.

If you are using ‘0.6.0’, or earlier, of activerecord-postgres-hstore you must use this gem’s version ‘0.0.8’ and the following still applies:

activerecord-postgres-hstore and activerecord-postgres-array both monkeypatch ActiveRecord::Base#arel_attributes_values, which leads to problems if these gems are used together. This gem is aware of activerecord-postgres-hstore and incorporates it in the monkeypatch. However, it is important that activerecord-postgres-array is loaded after activerecord-postgres-hstore for this to work.

Current limitations

  • Parsing of multi-dimensional postgres array strings is currently not implemented.
  • String, Decimal and Integer arrays have been tested, but other array types have not been. Type casting will need to be implemented for booleans, dates, etc

Future enhancements

  • Arel like querying of values within arrays
  • Arel like aggregate functions