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