Adds UUID magic
Ruby
Pull request Compare This branch is 13 commits ahead, 1 commit behind femto:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config/initializers
lib
spec
.gitignore
.travis.yml
CHANGELOG
Gemfile
LICENSE.txt
README.md
Rakefile
activerecord-uuid.gemspec

README.md

ActiveRecord::Uuid

Adds automatically-assigned UUIDs to your model and allows you to find by UUID directly.

Configuration

Add the gem to your Gemfile:

gem 'activerecord-uuid'

Create a migration to inclue a uuid column:

class CreateFoos < ActiveRecord::Migration
  def up
    create_table :foos do |t|
      t.string :uuid # Store it as a string. See below to use native PostgreSQL UUID columns.
    end
  end
end

Use it in your ActiveRecord model:

class Foo < ActiveRecord::Base
  include ActiveRecord::Uuid
end

See it work:

Foo.create
 => #<Foo id: 1, uuid: "680d92fc-8b1e-11e1-a80a-70cd60fffe5d">
Foo.find(1)
 => #<Foo id: 1, uuid: "680d92fc-8b1e-11e1-a80a-70cd60fffe5d">
Foo.find("680d92fc-8b1e-11e1-a80a-70cd60fffe5d")
 => #<Foo id: 1, uuid: "680d92fc-8b1e-11e1-a80a-70cd60fffe5d">

Native UUID Columns

This gem adds a Rails initializer that allows you to use native UUID types in PostgreSQL. To create a column in your migration:

class CreateFoos < ActiveRecord::Migration
  def up
    create_table :foos
    add_column :foos, :uuid, :uuid
  end
end

Note that this does not work with create_table and change_table block syntaxes. Feel free to add support and open a pull request.

Dumping your db/schema.rb file will not work with native UUID types, so instead you should use this line in your config/application.rb file to instead dump to db/structure.sql:

config.active_record.schema_format = :sql

TODO

  1. Allow configuration of UUID columns.
  2. Figure out how to make native migrations work with create_table and change_table.
  3. Write tests!

Copyright

© 2012 Adaptly. See LICENSE.txt for further details.