3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails ランダムな重複しないユニークID生成

Posted at

重複しないIDを付与したい場合の解決策

ユーザー数や投稿数などを悟られたく無い場合、
RDBMSで付与されるidとは別にidを付与する手段

①ランダム SecureRandom.uuidを使用

バージョン 4 の UUID (Universally Unique IDentifier) を生成して返します。
version 4 の UUID は全くランダムです (バージョンを除いて)。この UUID は MAC アドレスや時刻などのような意味のある情報を含みません。

controller.rb
p SecureRandom.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
p SecureRandom.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"

②連番 Gem Sequencedを使用

コントローラーなどで指定せずとも以下の例ではスコープを渡してそのcolumn_nameに対して連番を自動的に降ってくれます。
※スタートする番号など各種カスタマイズ可能

  1. カラムにsequential_idというカラムを作成
  2. model.rbに以下記入
  3. あとは何も考えずレコードを生成すれば自動的に連番にしてくれます
model.rb
acts_as_sequenced scope: :column_name
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?