Rails 3.0.20 と Ruby 1.8.7 (2011-06-30 パッチレベル 352) を使用しています。
GUID を生成するのに最適なプラグインを教えてください。
Rails 3.0.20 と Ruby 1.8.7 (2011-06-30 パッチレベル 352) を使用しています。
GUID を生成するのに最適なプラグインを教えてください。
たくさんのオプションがあります。追加の依存関係を追加せず、SecureRandom
組み込みのものを使用することをお勧めします。
SecureRandom.uuid #=> "1ca71cd6-08c4-4855-9381-2f41aeffe59c"
その他の使用可能な形式については、こちらを参照してください。
まず最初に、Ruby と Rails のバージョンをアップグレードしてください。
GUID を生成する非常に優れた方法は、Ruby モジュールであるSecureRandomです。簡単な使い方で。
require 'securerandom'
guid = SecureRandom.hex(10) #or whatever value you want instead of 10
PostgreSQL を使用し、組み込みの uuid 列を使用することをお勧めします。列を作成するタイプに基づいて UUID を自動生成します。
Rails 3 移行の例
execute <<-SQL
CREATE TABLE some_items (id uuid PRIMARY KEY DEFAULT uuid_generate_v1());
SQL
Rails 4 でこれを行うには、より良い方法かもしれません。
詳しくは、Rails 3.X および 4.X の例で securerandom ruby 標準ライブラリを使用して UUID を使用する方法を参照してください。
lib/usesguid.rb に 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'
以下に示すように、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
これは、Rails アプリケーションの UUID を構成するのに役立ちます。
これは、Rails 3.0、3.1、3.2、および 4.0 でも役立ちます。
使用中に問題が発生した場合はお知らせください。とても簡単です。
Rails4のその他のオプションはこちら