我的应用程序中有很多地方需要生成带有唯一标记的链接(foo.com/g6Ce7sDygw 或其他)。每个链接可能与一些会话数据相关联,并将用户带到一些特定的控制器/操作。
有谁知道有一个 gem/插件可以做到这一点?它很容易实现,但会更干净,无需为每个应用程序从头开始编写。
我需要同样的想法,你也需要,我自己实现了它。我不知道有什么插件可以满足你的要求。正如您所写,实施它并不那么困难。这是我的解决方案:
-
因为我不想使用 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
有了它,您可以创建独特的链接:
link = String.random_alphanumeric
作为参数,您可以设置所需字符串的大小。
-
另一件重要的事情是在数据库中搜索这个字符串。我使用 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
希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)