我需要为我的rails应用程序生成uuid。 我有什么select(gem)?

我使用的Rails 3.0.20和ruby1.8.7(2011-06-30 patchlevel 352)

请build议我最好的插件来产生guid。

有很多选项,我build议不要添加额外的依赖关系,并使用内置的SecureRandom

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

请参阅其他可能的格式。

我build议的第一件事是请升级你的ruby和rails版本。

生成guid的一个很好的方法是SecureRandom ,它是一个ruby模块。 易于使用。

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

请详细看看如何使用securerandom ruby​​标准库在rails 3.X和4.X中用例子来使用UUID

在lib / usesguid.rb中创buildusesguid.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' 

为UUID函数创build迁移脚本,如下所述 –

 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 

这将帮助您为您的Rails应用程序configurationUUID。

这对Rails 3.0,3.1,3.2和4.0也是有用的。

请让我知道如果您使用它有任何问题,那么简单!

Rails4的其他选项在这里

我build议使用PostgreSQL并使用内置的uuid列,它会根据创build列的types自动生成UUID。

Rails 3迁移示例

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

在Rails 4中可能是一个更好的方法。