如何将Model / Model-name传递给(Ruby / Rails)中的方法

时间:2015-07-02 22:26:14

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个为特定数据库表中的条目生成随机字符串的方法。我需要随机字符串在该表中是唯一的。

为此,我使用以下代码段:

@mymodel = MyModel.find_by_random_string(random_string)
if !@mymodel.nil?
   . . . 
else
   . . . 
end

我的问题是我想将此方法概括为在多个表中使用。所以,显然,我无法将“MyModel”硬编码到其中。但我不知道如何传递模型。

我该怎么做?

1 个答案:

答案 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"