面向 Node.js 等 JS 平台的 TypeScript/JavaScript ORM,同时支持 Active Record 与 Data Mapper 模式。
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
将 gem 添加到 Gemfile
- 2
安装依赖
bundle install - 3
生成 FriendlyId 配置文件和迁移
rails generate friendly_id - 4
运行数据库迁移
rails db:migrate
使用前须知
- 仅适用于 Ruby on Rails 和 Active Record 模型。
- 将 FriendlyId 添加到已有应用后,需要手动为现有记录生成 slug。
标签
常见问题
- 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 数据每日更新。
相关项目
Ruby on Rails 是一个基于 MVC 模式的全栈 Web 框架,用于用 Ruby 构建数据库驱动的 Web 应用。
为 Rails 模型添加智能全文搜索的 Ruby 库,底层基于 Elasticsearch 或 OpenSearch。
基于 Ruby on Rails 的开源电商框架,供开发者搭建并完全掌控自有线上商店。
为 Ruby on Rails 应用提供支付引擎,统一对接 Stripe、Paddle、Braintree 等支付平台的订阅与收款。