104

Rails 3.0.20 と Ruby 1.8.7 (2011-06-30 パッチレベル 352) を使用しています。

GUID を生成するのに最適なプラグインを教えてください。

4

4 に答える 4

299

たくさんのオプションがあります。追加の依存関係を追加せず、SecureRandom組み込みのものを使用することをお勧めします。

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

その他の使用可能な形式については、こちらを参照してください。

于 2013-08-14T09:50:04.580 に答える
13

まず最初に、Ruby と Rails のバージョンをアップグレードしてください。

GUID を生成する非常に優れた方法は、Ruby モジュールであるSecureRandomです。簡単な使い方で。

require 'securerandom'
guid = SecureRandom.hex(10) #or whatever value you want instead of 10
于 2013-08-14T09:50:56.263 に答える
3

PostgreSQL を使用し、組み込みの uuid 列を使用することをお勧めします。列を作成するタイプに基づいて UUID を自動生成します。

Rails 3 移行の例

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

Rails 4 でこれを行うには、より良い方法かもしれません。

于 2014-01-27T21:06:53.213 に答える
2

詳しくは、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のその他のオプションはこちら

于 2013-10-22T11:23:09.847 に答える