1

Railsで番号IDに代わるものはありますか?

私は e コマース Web アプリケーションを持っています。登録するたびに、URL に自分のアカウントの ID が表示されます。同様に、注文を行うと、URL で注文の ID を確認できます。

したがって、競合他社はアプリケーションのパフォーマンスに関する重要な情報に簡単にアクセスできます。(これはすでに問題を引き起こしています。) ユーザーから情報を隠すにはどうすればよいですか?

すべての ID を巨大な数だけ増やすことを考えていましたが、それでも一定期間のパフォーマンスを測定できます。また、関連するすべてのテーブルも変更する必要があります。

IDをエンコードする方法はありますか? それとも、どうにかしてランダム化しますか?

4

1 に答える 1

4

これは、標準の Rails ID を 16 桁の UUID に置き換えるgemです。これらの UUID はランダム化されており、重複する可能性が非常に低いという点で (完全に一意ではなく) 「実質的に一意」です。

また、 Rails 4 には UUID 主キーのサポートが組み込まれています。

ID の実際の番号を無関係にするだけでなく、競合他社が請求書などを数えることができないようにするだけでなく、UUID は分散データベースの結合を容易にするためにも使用されます。

登録するたびに、URL に自分のアカウントの ID が表示されます。同様に、注文を行うと、URL で注文の ID を確認できます。

これは通常、悪い習慣であり、あなたが述べた理由だけではありません。長い数字は、覚えにくい、入力しにくいなど、さまざまな点でユーザーフレンドリーではありません。UUID を使用すると、非常に長いため、これらの問題がさらに悪化します。

これを処理する 1 つの方法は、プライマリ キーではない独自の一意の ID を作成することです。たとえば、新しいアカウントまたは注文の ID をランダムに選択し、保存できる一意の ID が見つかるまで再選択できます。次に、その番号をそれらのテーブルの表示および検索 ID として使用します。

このための巧妙なトリックの 1 つは、結果の数値をより高い基数としてエンコードして、より短くすることです。たとえば、1000 万の ID のプールが必要な場合は、次のようにします。

 rand(10000000).to_s(36)
 => "4s2w1"
于 2013-06-23T13:15:44.640 に答える