Repolode
norman

norman/friendly_id

一个 Ruby on Rails Active Record 插件,为模型生成可读的 slug,让 URL 可以用名称代替数字 ID。

Star
6,222
Fork
591
未关闭 Issue
33
最近提交
3个月前

这是什么?

FriendlyId 是一个用于 Active Record 的 Ruby gem,可以根据模型属性生成便于阅读的 URL slug。接入后,/states/washington 这样的地址可以替代 /states/4323454 这种使用数字主键的地址,而模型的查找方法同时接受两种形式。

使用时,需要在数据表中添加 slug 字段,在模型中通过 friendly_id 声明用于生成 slug 的属性,并把控制器中的 Model.find 替换为 Model.friendly.find。gem 还提供了生成配置文件和迁移文件的命令,并可通过 allow_nil 选项在找不到记录时返回 nil,而不是抛出异常。

该项目还支持 slug 历史与版本管理、国际化(i18n)、作用域 slug、保留字以及自定义 slug 生成器等进阶功能。项目采用 MIT 许可证,适用于 Rails 4.0 及以上版本。

核心功能

  • 01根据模型属性自动生成 slug 并保存到指定字段。
  • 02find 方法同时支持 slug 和数字主键查找。
  • 03保留 slug 历史记录,使旧链接仍可访问。
  • 04支持作用域 slug、保留字和自定义 slug 生成器。
  • 05提供 slug 的国际化(i18n)支持。

适用场景

  • 在 Rails 项目中让页面 URL 显示商品、用户或文章名称,而不是 ID。
  • 记录标题变化后,借助 slug 历史保留旧链接的可访问性。
  • 为已有数据的 Rails 应用补充可读的永久链接。

快速上手

  1. 1

    将 gem 添加到 Gemfile

  2. 2

    安装依赖

    bundle install
  3. 3

    生成 FriendlyId 配置文件和迁移

    rails generate friendly_id
  4. 4

    运行数据库迁移

    rails db:migrate

使用前须知

  • 仅适用于 Ruby on Rails 和 Active Record 模型。
  • 将 FriendlyId 添加到已有应用后,需要手动为现有记录生成 slug。

标签

#ruby#rails#active-record#slug#friendly-url#permalink#plugin

常见问题

friendly_id 是什么?
一个 Ruby on Rails Active Record 插件,为模型生成可读的 slug,让 URL 可以用名称代替数字 ID。 FriendlyId 是一个用于 Active Record 的 Ruby gem,可以根据模型属性生成便于阅读的 URL slug。接入后,/states/washington 这样的地址可以替代 /states/4323454 这种使用数字主键的地址,而模型的查找方法同时接受两种形式。
friendly_id 可以免费使用吗?用的什么许可证?
friendly_id 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
friendly_id 还在维护吗?
半年内有更新。friendly_id 最近一次提交是在 2026年8月18日。
friendly_id 适合用来做什么?
在 Rails 项目中让页面 URL 显示商品、用户或文章名称,而不是 ID。 记录标题变化后,借助 slug 历史保留旧链接的可访问性。 为已有数据的 Rails 应用补充可读的永久链接。
friendly_id 怎么安装和运行?
将 gem 添加到 Gemfile 安装依赖: bundle install 生成 FriendlyId 配置文件和迁移: rails generate friendly_id 运行数据库迁移: rails db:migrate
在哪里获取 friendly_id?
源代码和安装说明在 GitHub 上:https://github.com/norman/friendly_id

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目