web-dev-qa-db-fra.com

J'ai besoin de générer uuid pour mon application Rails. Quelles sont les options (gemmes) que j'ai?

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

Suggérez-moi le meilleur plugin pour générer des guides.

80
Virtual

Il y a beaucoup d'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 d'autres formats possibles ici .

237
apneadiving

La première chose que je suggérerais est que s'il vous plaît mettez à jour votre Ruby et Rails version.

Un très bon moyen de générer guid est: SecureRandom , qui est un module Ruby. Avec une utilisation facile.

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

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

Exemple dans Rails 3 migration

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

Cela pourrait être une meilleure façon de faire ceci dans Rails 4.

3
riley

S'il vous plaît voir en détail, comment utiliser securerandom Ruby bibliothèque standard pour utiliser UUID avec 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 celui-ci -

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

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

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

Créez un script de migration pour la fonction UUID comme indiqué ci-dessous pour -

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 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 faites le moi savoir Si vous avez un problème lors de l'utilisation, si simple!

Autres options pour Rails4 here

2
Rameshwar Vyevhare