Rails плагин для генерации уникальных ссылок? - PullRequest
2 голосов
/ 26 марта 2010

В моем приложении много мест, где мне нужно генерировать ссылки с уникальными токенами (foo.com/g6Ce7sDygw или что-то еще). Каждая ссылка может быть связана с некоторыми данными сеанса и приведет пользователя к определенному контроллеру / действию.

Кто-нибудь знает о геме / плагине, который это делает? Это достаточно просто реализовать, но будет понятнее без необходимости писать его с нуля для каждого приложения.

1 Ответ

0 голосов
/ 26 марта 2010

Мне нужно то же самое подумать, вам нужно, и я сам реализовал это.Я не знаю ни о каком плагине, который делает то, что вы хотите.Как вы написали, реализовать это не так сложно.Вот мое решение:

  1. Так как я не хотел использовать UUID (потому что он закодирован с помощью hex).Я хотел немного случайных буквенно-цифровых с большими и маленькими буквами.Я добавил этот метод в класс 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
    

    В качестве параметра вы можете установить размер желаемой строки.

  2. Другая важная вещь - поиск этой строки в БД.Я использую 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
    

Надеюсь, это поможет!

...