2017-05-29 54 views
1

我有一個與devise關聯的用戶模型。這需要照顧登錄/註冊我有一個用戶信息模型有姓名,電子郵件,Gpa,專業,學院和令牌。一旦用戶註冊,他們必須填寫表格,填寫userinfo模型中除令牌之外的所有信息。當他們在Rails應用程序中註冊時爲每個用戶分配一個隨機數

我想要做的是在用戶註冊後爲用戶分配一個隨機的五位整數。這將被存儲在令牌中。例如,在表單中,用戶填寫他們的姓名爲「Jason」,電子郵件爲「[email protected]」,gpa爲「4.0」,大學爲「某處大學」。這就是他們所填寫的。這就是他們會看到的。然後程序會爲令牌分配一個隨機的五位數字,也許是「16352」。然後,我將能夠在稍後通過該令牌找到該用戶。因此,如果有人在「按用戶標識查找」區域下的索引頁中輸入「16352」,則此用戶將顯示出來。我怎樣才能做到這一點?

回答

1

您可以使用before_save回調函數,該函數在保存到數據庫之前爲該模型的特定屬性設置一個隨機數。

在你的模型,你可以將其定義爲set_random_number或任何號碼,並把它作爲before_save :set_random_number

before_save :set_random_number 

def set_random_number 
    self.random_number = rand(10000..99999) 
end 

然後,只要您爲模型創建一個新的紀錄,在set_random_number回調將「火」之前記錄保存,並會設置一個隨機數10000和99999

+0

塞巴斯蒂安去救援,再次!哈哈 – Dinukaperera

+0

很高興幫助:) –

2

。如果您使用Rails 5,你可以採取這樣調用

class SomeModel < ApplicationRecord 
    has_secure_token :random_token 
    ... 
end 
新功能的優勢

它會在創建時生成,所以你不必做太多的工作,除非你的表格中有一個名爲random_token的列或者任何你想要調用的列。

這比一個簡單的隨機數的優點是,這是不可猜測的,並會需要一個天文數量(壞)運氣來猜測。

你可以閱讀更多關於這個不錯的功能here

+0

不錯,沒有意識到這一功能。 – Gerry

+0

謝謝!但我沒有使用rails 5 :( – Dinukaperera

相關問題