我有一个为特定数据库表中的条目生成随机字符串的方法。我需要随机字符串在该表中是唯一的。
为此,我使用以下代码段:
@mymodel = MyModel.find_by_random_string(random_string)
if !@mymodel.nil?
. . .
else
. . .
end
我的问题是我想将此方法概括为在多个表中使用。所以,显然,我无法将“MyModel”硬编码到其中。但我不知道如何传递模型。
我该怎么做?
答案 0 :(得分:2)
不确定我是否理解正确,但您可以为随机类生成唯一的随机字符串,如下所示:
class RandomStringGenerator
def self.generate_random_string_for(klass)
loop do
random_string = SecureRandom.hex(5)[0..8].upcase
break random_string unless klass.exists?(random_string: random_string)
end
end
end
RandomStringGenerator.generate_random_string_for(MyModel) # => "679086C37"