我使用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"
查看其他可能的格式,请在此处查看。
我建议的第一件事是升级你的 ruby 和 rails 版本。
一个非常好的生成 GUID 的方式是使用 SecureRandom,它是一个具有易用性的 Ruby 模块。
require 'securerandom'
guid = SecureRandom.hex(10) #or whatever value you want instead of 10
require 'securerandom'
。 - Eric Wanchicexecute <<-SQL
CREATE TABLE some_items (id uuid PRIMARY KEY DEFAULT uuid_generate_v1());
SQL
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
require File.dirname(__FILE__) + '/../lib/usesguid'
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
Digest::UUID
,例如Digest::UUID.uuid_v4
。 - Tilo