Please see in detail, how to use securerandom ruby standard library to use UUID with example in rails 3.X and 4.X
create usesguid.rb file in your lib/usesguid.rb and paste below code in that -
require 'securerandom'
module ActiveRecord
module Usesguid #:nodoc:
def self.append_features(base)
super
base.extend(ClassMethods)
end
module ClassMethods
def usesguid(options = {})
class_eval do
self.primary_key = options[:column] if options[:column]
after_initialize :create_id
def create_id
self.id ||= SecureRandom.uuid
end
end
end
end
end
end
ActiveRecord::Base.class_eval do
include ActiveRecord::Usesguid
end
add following line in your config/application.rb to load file -
Create migration script for UUID function as mentioned below to -
class CreateUuidFunction < ActiveRecord::Migration
def self.up
execute "create or replace function uuid() returns uuid as 'uuid-ossp', 'uuid_generate_v1' volatile strict language C;"
end
def self.down
execute "drop function uuid();"
end
end
Here is example for contact migration, how we can use it -
class CreateContacts < ActiveRecord::Migration
def change
create_table :contacts, id: false do |t|
t.column :id, :uuid, null:false
t.string :name
t.string :mobile_no
t.timestamps
end
end
end
Final how to use into your model
class Contact < ActiveRecord::Base
usesguid
end
This will help you to configure UUID for your rails application.
This can be useful for Rails 3.0, 3.1, 3.2 and 4.0 as well.
Please let me know If you have any issue while using it, so simple!