Подтвердить что ты не робот

Мне нужно создать uuid для моего приложения rails. Какие у меня варианты (драгоценные камни)?

Я использую Rails 3.0.20 и ruby 1.8.7 (2011-06-30 patchlevel 352)

Пожалуйста, предложите мне лучший плагин для генерации guid.

4b9b3361

Ответ 1

Есть много вариантов, я рекомендую не добавлять дополнительные зависимости и использовать SecureRandom, который встроен:

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

Смотрите другие возможные форматы здесь.

Ответ 2

Первое, что я хотел бы предложить, - это обновить версию рубинов и рельсов.

Очень хороший способ генерации guid - SecureRandom, который является рубиновым модулем. С легким использованием.

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

Ответ 3

Пожалуйста, смотрите подробно, как использовать стандартную библиотеку securerandom ruby ​​для использования UUID с примером в rails 3.X и 4.X

создайте файл useguid.rb в файле lib/usesguid.rb и вставьте под ним код -

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

добавьте следующую строку в ваш config/application.rb для загрузки файла -

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

Создайте миграцию script для функции UUID, как указано ниже, в

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

Вот пример миграции контактов, как мы можем его использовать -

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

Окончательный вариант использования в вашей модели

class Contact < ActiveRecord::Base
  usesguid

end

Это поможет вам настроить UUID для вашего приложения rails.

Это может быть полезно для Rails 3.0, 3.1, 3.2 и 4.0.

Пожалуйста, дайте мне знать Если у вас есть какие-то проблемы при использовании, так просто!

Другие варианты Rails4 здесь

Ответ 4

Я бы предложил использовать PostgreSQL и использовать построенный в нем столбцы uuid, он автогенерирует UUID на основе типа, который вы создаете в столбце.

Пример миграции Rails 3

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

Возможно, это лучший способ сделать это в Rails 4.