Понимание метода slug_candidates в модели 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"