Я использую Rails 3.0.20 и ruby 1.8.7 (2011-06-30 patchlevel 352)
Пожалуйста, предложите мне лучший плагин для генерации guid.
Я использую Rails 3.0.20 и ruby 1.8.7 (2011-06-30 patchlevel 352)
Пожалуйста, предложите мне лучший плагин для генерации guid.
Есть много вариантов, я рекомендую не добавлять дополнительные зависимости и использовать SecureRandom
, который встроен:
SecureRandom.uuid #=> "1ca71cd6-08c4-4855-9381-2f41aeffe59c"
Смотрите другие возможные форматы здесь.
Первое, что я хотел бы предложить, - это обновить версию рубинов и рельсов.
Очень хороший способ генерации guid - SecureRandom, который является рубиновым модулем. С легким использованием.
require 'securerandom'
guid = SecureRandom.hex(10) #or whatever value you want instead of 10
Пожалуйста, смотрите подробно, как использовать стандартную библиотеку 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 здесь
Я бы предложил использовать PostgreSQL и использовать построенный в нем столбцы uuid, он автогенерирует UUID на основе типа, который вы создаете в столбце.
Пример миграции Rails 3
execute <<-SQL
CREATE TABLE some_items (id uuid PRIMARY KEY DEFAULT uuid_generate_v1());
SQL
Возможно, это лучший способ сделать это в Rails 4.