用于生成唯一链接的Rails插件?

时间:2010-03-26 08:31:52

标签: ruby-on-rails ruby plugins tokenize

我的应用程序中有很多地方需要生成带有唯一令牌的链接(foo.com/g6Ce7sDygw或其他)。每个链接可能与某些会话数据相关联,并会将用户带到某个特定的控制器/操作。

有没有人知道这样做的宝石/插件?它很容易实现,但是如果不必为每个应用程序从头开始编写它都会更清晰。

1 个答案:

答案 0 :(得分:0)

我需要同样的想法,你需要我自己实现它。我不知道任何插件可以做你想要的。正如你所写,实现它并不困难。这是我的解决方案:

  1. 因为我不想使用UUID(因为它是用十六进制编码的)。我想要一些带有大小写字母的随机字母数字。我将此方法添加到String类:

    def String.random_alphanumeric(size=20)
      s = ""
     size.times { s << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
      s
    end
    

    有了它,你可以创建uniqe链接:

    link = String.random_alphanumeric
    

    作为参数,您可以设置所需字符串的大小。

  2. 另一个重要的事情是在db中搜索此字符串。我使用mysql,默认情况下它不区分大小写,所以我在我的UniqueLink模型中添加了搜索方法:

    def self.find_uid(search_for)
      find_by_sql("SELECT * FROM workshop_application_unique_ids where uid = '#{search_for}' COLLATE utf8_bin ORDER BY created_at DESC").first
    end
    
  3. 希望它有所帮助!