friendly_id gem, меньше ha sh? - PullRequest
       15

friendly_id gem, меньше ha sh?

2 голосов
/ 15 февраля 2020

Учитывая, что мой кандидат на слаг является my title, и он уже используется, слаг будет возвращать что-то вроде: my-title-49c9938b-ece5-4175-a4a4-0bb2b0f26a27

Возможно ли, чтобы friendly_id вернул меньшее ха sh ? Нравится: my-title-705d62eea60a

1 Ответ

3 голосов
/ 15 февраля 2020

В этом случае вы можете создать свой собственный метод, который затем можете передать friendly_id. Там вы можете определить, какие будут комбинации, которые FriendlyId будет использовать для назначения уникального идентификатора вашей записи как слаг.

Например:

friendly_id :column_candidates, use: :slugged

def column_candidates
  [
    :name,
    [:name, :another_column],
    [...more columns combinated as a fallback]
  ]
end

Если FriendlyId может не создавать уникальную запись (слагом) после оценки каждой комбинации столбцов в column_candidates, затем она все равно добавит UUID.

Вы можете добавлять объекты, которые вы хотите column_candidates, будучи строками, процами, лямбдами или символами. Также имя метода не обязательно должно быть именно таким, вы можете изменить его по мере необходимости.

В качестве последнего ресурса, и если уникальный идентификатор не может быть создан, вы можете положиться на создание собственного короткого и всегда в состоянии не быть уникальным ха sh используя Digest::SHA1:

...
[-> { Digest::SHA1.hexdigest(name).chars.sample(6).join }]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...