Use Postgres UUID
Use UUIDs as the default primary key for your models
Used 339 times
Usage
Once you've finished running this template, Rails will use UUID for any new models you create by default.
If adding foreign keys pointing at a UUID table, make sure to use type: :uuid
If adding foreign keys pointing at a UUID table, make sure to use type: :uuid
class CreateComments < ActiveRecord::Migration[6.0]
def change
create_table :comments, id: :uuid do |t|
t.references :post, null: false, type: :uuid, foreign_key: true
t.timestamps
end
end
end
Run this command in your Rails app directory in the terminal:
rails app:template LOCATION="https://railsbytes.com/script/V4Ys1d"
Template Source
Review the code before running this template on your machine.
model_name = generate(:migration, 'enable_uuid')
command = <<-CODE
MIGRATION_FILE=$(find . -name "*enable_uuid.rb") &&
awk -v q=\\' '1;/change/{ print " enable_extension" q "pgcrypto" q}' $MIGRATION_FILE > enable_uuid.rb &&
mv enable_uuid.rb $MIGRATION_FILE
CODE
inside('db/migrate') do
run(command)
end
initializer 'generators.rb', <<-CODE
Rails.application.config.generators do |g|
g.orm :active_record, primary_key_type: :uuid
end
CODE
Comments
Julian Pinzon Eslava
Hey Andrew! I think it would be nice to add this extra bit to this template to enable default ordering by created at when using UUIDs
https://t.co/eEZpJqCbXX
https://t.co/eEZpJqCbXX