首先,由于您想Movie
通过“slug”之类的方式进行查找the-social-network
,因此您需要扩展FriendlyId
并告诉它将 参数id
化为一个名为 的属性slug
。通过:slugged
如下传递来做到这一点:
# app/models/movie.rb
class Movie < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: :slugged
end
然后,创建一个迁移来存储slug
对象Movie
:
# in console
rails g migration add_slug_to_movies slug:string
修改迁移文件以添加slug
为索引:
# change migration file
class AddSlugToMovies < ActiveRecord::Migration
def change
add_column :movies, :slug, :string
add_index :movies, :slug
end
end
最后,您需要为数据库中的所有现有电影创建一个 slug。您可以通过逐一保存每部电影来做到这一点:
# in Rails console
Movie.find_each(&:save)
完成此操作后,您应该能够在Movie
类似于/movies/the-social-network/comments/new
.
查看此 Railscast以获取更多详细信息和示例,包括确保在数据库中更改标题时正确更新对象的 slug。