---
url: /reference/concerns/sluggable.md
---
# Trek::Sluggable

Auto-generates locale-aware URL slugs before validation, for every available locale.

## Behavior

* `before_validation`, the slug is regenerated per locale: from a route translation of the page `key` when one exists, otherwise by parameterizing the SEO title
* Validates slug presence (except for the root page) and uniqueness among siblings (`scope: :parent_id`)

## Requirements

* [Translatable](/reference/concerns/translatable) with a translated `slug`
* A `key` attribute, a `root?` predicate and `seo_values` (provided by [SearchEngineOptimizable](/reference/concerns/search-engine-optimizable))

## Usage

```ruby
page = Page.new(key: "services", title: "Our Services")
page.save
page.slug # => "our-services"
```
