validates_uniqueness_of是否适用于生成随机令牌?

时间:2009-05-15 11:11:14

标签: ruby-on-rails

如果我想为rails中的令牌生成随机字符串,我可以使用validates_uniqueness_of吗?鉴于这不是用户输入或得到错误的东西,因为它需要立即独特。或者我只是愚蠢?

2 个答案:

答案 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来创建唯一值。