107 votes

J'ai besoin de générer un uuid pour mon application rails. Quelles sont les options (gemmes) dont je dispose ?

J'utilise Rails 3.0.20 et ruby 1.8.7 (2011-06-30 patchlevel 352)

Veuillez me suggérer le meilleur plugin pour générer un guide.

303voto

apneadiving Points 64660

Il existe de nombreuses options, je recommande de ne pas ajouter de dépendances supplémentaires et d'utiliser SecureRandom qui est intégré :

SecureRandom.uuid #=> "1ca71cd6-08c4-4855-9381-2f41aeffe59c"

Voir les autres formats possibles aquí .

15voto

Hasan Iqbal Points 1909

La première chose que je vous suggère est de mettre à jour vos versions de ruby et de rails.

Une très bonne façon de générer des guides est SecureRandom qui est un module ruby facile à utiliser.

require 'securerandom'
guid = SecureRandom.hex(10) #or whatever value you want instead of 10

3voto

riley Points 643

Je vous suggère d'utiliser PostgreSQL et d'utiliser la colonne uuid intégrée, qui génère automatiquement l'UUID en fonction du type de colonne que vous créez.

Exemple de migration dans Rails 3

execute <<-SQL
  CREATE TABLE some_items (id uuid PRIMARY KEY DEFAULT uuid_generate_v1());
SQL

Il pourrait y avoir une meilleure façon de faire ça dans Rails 4.

2voto

Veuillez voir en détail, comment utiliser la bibliothèque standard ruby securerandom pour utiliser les UUID avec un exemple dans rails 3.X et 4.X.

créez le fichier usesguid.rb dans votre lib/usesguid.rb et collez le code ci-dessous dans ce fichier.

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

ajoutez la ligne suivante dans votre config/application.rb pour charger le fichier -

require File.dirname(__FILE__) + '/../lib/usesguid'

Créez la migration script pour la fonction UUID comme mentionné ci-dessous à -.

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

Voici un exemple de migration de contact, comment nous pouvons l'utiliser.

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 comment utiliser dans votre modèle

class Contact < ActiveRecord::Base
  usesguid

end

Cela vous aidera à configurer l'UUID pour votre application rails.

Cela peut être utile pour Rails 3.0, 3.1, 3.2 et 4.0 également.

S'il vous plaît laissez-moi savoir si vous avez un problème tout en l'utilisant, si simple !

Autres options pour Rails4 aquí

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X