如果我想为rails中的令牌生成随机字符串,我可以使用validates_uniqueness_of吗?鉴于这不是用户输入或得到错误的东西,因为它需要立即独特。或者我只是愚蠢?
答案 0 :(得分:2)
怎么样:
class Token < ActiveRecord::Base
validates_uniqueness_of :random_key
before_validation_on_create :create_key_until_valid
def create_key_until_valid
self.random_key = rand.to_s.slice(2,10)
while Token.find_by_random_key(self.random_key)
self.random_key = rand.to_s.slice(2,10)
end
end
end
答案 1 :(得分:0)
validates_uniqueness_of只会确保该属性是唯一的 - 它不会生成该值。
我使用before_validation来创建唯一值。