Столбец
или title
. Однако существуют сценарии, в которых вам может потребоваться использовать несколько столбцов для создания уникального фрагмента. В этой статье мы рассмотрим различные методы реализации FriendlyId с несколькими столбцами, а также приведем примеры кода.
Метод 1: использование объединенного поля.
Один подход заключается в объединении нескольких столбцов для создания единого поля, которое будет использоваться для создания пула. Допустим, у нас есть модель Product
со столбцами name
и category
. Мы можем определить метод в модели следующим образом:
class Product < ApplicationRecord
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
def slug_candidates
[
[:name, :category],
[:name, :category, :id]
]
end
end
В этом примере мы предоставляем массив возможных комбинаций для фрагмента в методе slug_candidates
. FriendlyId попытается выполнить каждую комбинацию и использовать первую, которая приведет к созданию уникального фрагмента.
Метод 2: использование пользовательского метода
Другой подход заключается в определении пользовательского метода, который генерирует фрагмент на основе нужных столбцов. Давайте рассмотрим модель Person
со столбцами first_name
и last_name
. Мы можем определить такой метод:
class Person < ApplicationRecord
extend FriendlyId
friendly_id :generate_slug, use: :slugged
def generate_slug
"#{first_name}-#{last_name}".parameterize
end
end
Здесь мы объединяем имя и фамилию через дефис, а затем используем метод parameterize
для преобразования строки в формат, удобный для URL.
Метод 3: использование обратного вызова
Вы также можете использовать обратный вызов для создания фрагмента на основе нескольких столбцов. Давайте возьмем пример модели BlogPost
со столбцами title
и published_at
. Мы можем определить обратный вызов before_save
следующим образом:
class BlogPost < ApplicationRecord
extend FriendlyId
friendly_id :title, use: :slugged
before_save :generate_slug
def generate_slug
self.slug = "#{title.parameterize}-#{published_at.year}"
end
end
В этом примере метод generate_slug
вызывается перед сохранением записи и устанавливает фрагмент на основе названия и года публикации.
В этой статье мы рассмотрели различные методы реализации FriendlyId с несколькими столбцами в Ruby on Rails. Мы узнали об использовании объединенного поля, специального метода и обратного вызова для создания фрагментов на основе нескольких столбцов. В зависимости от ваших конкретных требований вы можете выбрать наиболее подходящий метод для вашего приложения.