ruby on rails - Necesito generar uuid para mi aplicación de rieles. ¿Cuáles son las opciones(gemas) que tengo?
ruby-on-rails ruby-on-rails-3 (4)
Lo primero que sugeriría es que actualice su versión de ruby y rieles.
Una forma muy buena de generar guid es SecureRandom , que es un módulo ruby. Con un uso fácil.
require ''securerandom''
guid = SecureRandom.hex(10) #or whatever value you want instead of 10
Esta pregunta ya tiene una respuesta aquí:
- Generando guías en Ruby 9 respuestas
Uso Rails 3.0.20 y ruby 1.8.7 (2011-06-30 patchlevel 352)
Por favor sugiérame el mejor complemento para generar guid.
Por favor, vea en detalle, cómo usar la biblioteca estándar de Ruby SecureAndom para usar el UUID con el ejemplo en los raíles 3.X y 4.X
crea el archivo usesguid.rb en tu lib / usesguid.rb y pega el código debajo en ese -
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
agregue la siguiente línea en su config / application.rb para cargar el archivo -
require File.dirname(__FILE__) + ''/../lib/usesguid''
Cree la secuencia de comandos de migración para la función UUID como se menciona a continuación para:
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
Aquí hay un ejemplo de migración de contactos, cómo podemos usarlo,
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 de cómo usar en tu modelo
class Contact < ActiveRecord::Base
usesguid
end
Esto lo ayudará a configurar el UUID para su aplicación de rieles.
Esto también puede ser útil para Rails 3.0, 3.1, 3.2 y 4.0.
Avísame si tienes algún problema mientras lo usas, ¡así de simple!
Otras opciones para Rails4 here
Yo sugeriría usar PostgreSQL y usar la columna uuid incorporada, autogenera el UUID basado en el tipo de creación de la columna.
Ejemplo en la migración de Rails 3
execute <<-SQL CREATE TABLE some_items (id uuid PRIMARY KEY DEFAULT uuid_generate_v1()); SQL
Podría ser una mejor manera de hacer esto en Rails 4.
Hay muchas opciones, recomiendo no agregar dependencias adicionales y usar SecureRandom
que está incorporado:
SecureRandom.uuid #=> "1ca71cd6-08c4-4855-9381-2f41aeffe59c"
Vea otros formatos posibles here .