Понимание метода кандидатов slug в модели Rails
Я пытаюсь создать красивые URL-адреса в своем приложении Rails. Я не мог понять, что происходит внутри метода #slug_candidates
в модели.
class News < ApplicationRecord
friendly_id :slug_candidates, use: [:slugged, :finders, :history]
def slug_candidates
[:title,
[:title, :id]
]
end
end
Также нашел аналогичный метод в ответе :
def slug_candidates
[
:name,
[:name, 2],
[:name, 3],
[:name, 4],
[:name, 5],
[:name, 6],
[:name, 7]
]
end
Может ли кто-нибудь дать краткое объяснение того, что делает этот метод?1 ответ:
Если у нас есть 2
news
с одинаковым названием, тоslugs
будет одинаковым. Поэтому мы не можем их идентифицировать. Например:New.all # => [#<New id: 1, tile: "Title">, #<New id: 2, tile: "Title">] # Without `slug_candidates` New.first # => URL: "news/title" New.second # => URL: "news/title" # => We cannot find the second one.
Теперь
slug_candidates
предоставляет список вариантов, и FriendlyId будет идти по этому списку, пока не найдет пули, которые еще не взяты.# With `slug_candidates` def slug_candidates [:title, [:title, :id]] end New.first # => URL: "news/title" New.second # => URL: "news/title-2"