第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Rails中創(chuàng)建唯一令牌的最佳方法?

在Rails中創(chuàng)建唯一令牌的最佳方法?

翻閱古今 2020-02-03 15:05:16
這就是我正在使用的。令牌不必一定要猜測,它更像是一個簡短的url標(biāo)識符,而不是其他任何東西,我想使其簡短。我遵循了一些我在網(wǎng)上找到的示例,如果發(fā)生碰撞,我認(rèn)為下面的代碼將重新創(chuàng)建令牌,但是我不確定。不過,我很好奇看到更好的建議,因?yàn)檫@樣的感覺有些粗糙。def self.create_token    random_number = SecureRandom.hex(3)    "1X#{random_number}"    while Tracker.find_by_token("1X#{random_number}") != nil      random_number = SecureRandom.hex(3)      "1X#{random_number}"    end    "1X#{random_number}"  end我的令牌數(shù)據(jù)庫列是唯一索引,我也在validates_uniqueness_of :token模型上使用它,但是因?yàn)檫@些是根據(jù)用戶在應(yīng)用程序中的操作自動創(chuàng)建的(它們實(shí)際上是下訂單并購買令牌)而批量創(chuàng)建,所以讓應(yīng)用拋出錯誤是不可行的。我想,我也可以減少沖突的機(jī)會,在末尾附加另一個字符串,這些字符串是基于時(shí)間生成的,或者類似的東西,但是我不希望令牌太長。
查看完整描述

3 回答

?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個贊

這可能是一個較晚的響應(yīng),但是為了避免使用循環(huán),您還可以遞歸調(diào)用該方法。它看起來和感覺對我來說都比較干凈。


class ModelName < ActiveRecord::Base


  before_create :generate_token


  protected


  def generate_token

    self.token = SecureRandom.urlsafe_base64

    generate_token if ModelName.exists?(token: self.token)

  end


end


查看完整回答
反對 回復(fù) 2020-02-03
  • 3 回答
  • 0 關(guān)注
  • 748 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號