在重構中,我需要將generate_token
方法移出我的用戶模型,以便可以由其他模型調用。將模型傳遞給rails中的方法
這是該方法的代碼:
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
當柱在允許根據需要在用戶模型來生成許多不同的令牌傳遞。該方法被稱爲像:
def some_other_method
generate_token(:token_column_name)
...
end
我的用戶模型目前通過兩種不同的令牌列的方法:auth_token
和pw_reset_token
。
我的第一個想法是把它放在/lib/generate_token.rb
,並從include generate_token
模型中調用它。我不應該傳入包含的列參數,因爲它只是包含方法,而不是調用它。
我面臨的挑戰是end while User.exists?(column => self[column])
。這可以防止該方法在已經存在的情況下生成新的令牌。但是,這是假設用戶模型;相反,我需要重構其採取與調用該方法,並通過在作爲一個變量的方法,如模型:
include generate_token(model_name)
使代碼現在可以讀取
end while [Model].exists?(column => self[column])
這可能嗎?我將如何做到這一點?
我馬上去關注...謝謝。 – Matteo
這似乎是我在找的東西。我會盡快發佈我的代碼。 (或者,我將再次發佈Stack ...:p) – Matteo
太好了,很高興我能幫上忙。 – GoGoCarl