我需要为我的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中可能是一个更好的方法。