📜  gem friendly_id 与多列 s (1)

📅  最后修改于: 2023-12-03 14:41:22.838000             🧑  作者: Mango

Gem friendly_id 与多列 s
简介

friendly_id 是一个流行的 Ruby gem,用于为 ActiveRecord 模型添加优雅的 URL。它提供了一种简单的方式来为模型的 slug 字段生成唯一的 URL。

多列 s 是对 friendly_id 的一个扩展,它允许我们创建一个由多个列组成的唯一 URL,而不仅仅是一个 slug 字段。

特性
  • 自动生成唯一且友好的 URL
  • 提供了多种生成 slug 的方式
  • 支持使用多个列生成 slug
  • 可以处理 UTF-8 字符
  • 支持历史纪录和版本控制
  • 可以与 Rails 强大的路由系统完美集成
安装

在 Gemfile 中添加以下行:

gem 'friendly_id', '~> 5.0'

然后执行 bundle install 命令来安装 gem。

使用
  1. 在模型中添加 friendly_id 作为 slug 字段的代理字段。例如,我们要生成一个由 title 和 year 组成的唯一 URL:

    class Movie < ApplicationRecord
      extend FriendlyId
      friendly_id :slug_candidates, use: :slugged
    
      def slug_candidates
        [
          [:title, :year],
          [:title, :year, :id]
        ]
      end
    end
    
  2. 迁移数据库,并为 slug 字段添加索引:

    rails g migration AddSlugToMovies slug:uniq
    
    class AddSlugToMovies < ActiveRecord::Migration[6.1]
      def change
        add_column :movies, :slug, :string
        add_index :movies, :slug, unique: true
      end
    end
    
  3. 生成 slug:

    Movie.find_each(&:save)
    
  4. 在控制器中使用 friendly_id 创建 URL:

    def show
      @movie = Movie.friendly.find(params[:id])
    end
    
结论

friendly_id 是一个方便而强大的 gem,可以帮助我们生成唯一且友好的 URL,而不仅仅是简单的 slug 字段。通过与多列 s 扩展的结合,我们可以使用多个模型字段来生成 URL,提供更加灵活和具有辨识度的链接。

使用 friendly_id 可以提高用户体验、优化 SEO,同时还提供了一些有用的特性,如历史纪录和版本控制。因此,如果你需要为 ActiveRecord 模型添加友好的 URL,不妨考虑使用 gem friendly_id 与多列 s。