Sha256: d3e34f397a2ecfcdd3ee2e9bb17811bad8f8083b222f42f6160a3aec192aa740

Contents?: true

Size: 1.86 KB

Versions: 8

Compression:

Stored size: 1.86 KB

Contents

# ActiveRecordPgStuff

Adds support for working with temporary tables and pivot tables (PostgreSQL only).

* [![Build Status](https://travis-ci.org/dima-exe/activerecord_pg_stuff.png?branch=master)](https://travis-ci.org/dima-exe/activerecord_pg_stuff)

## Installation

Add this line to your application's Gemfile:

    gem 'activerecord_pg_stuff'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install activerecord_pg_stuff

## Usage

#### Temporary tables

Example:

    User.select(:id, :email).temporary_table do |rel|
      rel.pluck(:id)
    end

#### Pivot tables

Before using, you need to create the extension:

    CREATE EXTENSION tablefunc

Example:

    CREATE TABLE payments (id integer, amount integer, seller_id integer, created_at timestamp)
    INSERT INTO payments
      VALUES (1, 1,  1, '2012-10-12 10:00 UTC'),
             (2, 3,  1, '2012-11-12 10:00 UTC'),
             (3, 5,  2, '2012-09-12 10:00 UTC'),
             (4, 7,  2, '2012-10-12 10:00 UTC'),
             (5, 11, 2, '2012-11-12 10:00 UTC'),
             (6, 13, 2, '2012-11-12 10:00 UTC')

    Payment
      .select("SUM(amount) AS amount", :seller_id, "DATE_TRUNC('month', created_at) AS month")
      .group("seller_id, DATE_TRUNC('month', created_at)")
      .temporary_table do |rel|
        # :month     - for row
        # :seller_id - for column
        # :amount    - for value
        rel.pivot(:month, :seller_id, :amount)
    end

    expect(result.headers).to eq [nil, 1, 2]

    expect(result.rows).to eq [
      [ Time.utc(2012, 9,  1), nil, 5  ],
      [ Time.utc(2012, 10, 1), 1,   7  ],
      [ Time.utc(2012, 11, 1), 3,   24 ],
    ]

## 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

Version data entries

8 entries across 8 versions & 4 rubygems

Version Path
activerecord_pg_stuff-0.2.1 README.md
envoy-activerecord_pg_stuff-0.3.0 README.md
activerecord_pg_stuff-0.2.0 README.md
envoy-activerecord_pg_stuff-0.0.3 README.md
envoy_activerecord_pg_stuff-0.0.2 README.md
directory_diff-0.4.5 vendor/gems/activerecord_pg_stuff-0.0.1/README.md
directory_diff-0.4.4 vendor/gems/activerecord_pg_stuff-0.0.1/README.md
activerecord_pg_stuff-0.0.1 README.md