我正在阅读小时源代码,并且有一个名为slug
的类https://github.com/DefactoSoftware/Hours/blob/development/app/models/concerns/sluggable.rb
我看到每个模型都有一个名为slug的属性,带有字符串类型?
在这种情况下,slug用于什么?
下面的代码是tag
模型中使用的一个slug,
class Tag < ActiveRecord::Base
attr_reader :total_hours
include Sluggable
validates :name, presence: true,
uniqueness: { case_sensitive: false }
has_many :taggings
has_many :hours, through: :taggings
has_many :projects, -> { uniq }, through: :hours
has_many :users, -> { uniq }, through: :hours
belongs_to :project
def self.list
Tag.order(:name).pluck(:name)
end
private
def slug_source
name
end
end
答案 0 :(得分:3)
一般来说,我用它来生成friendly url。如果您愿意,可以在URL中使用它的人类可读ID。我认为它的搜索引擎优化也很友好。你可以这样使用:
delete
而不是
mysite.com/products/xbox360-fifa-15
在你的链接中,如果slug已经存在,该方法将生成:
mysite.com/products/123456
效果:不要忘记在您使用的每个slug列上创建索引。
答案 1 :(得分:2)
在那里查看to_param
? https://github.com/DefactoSoftware/Hours/blob/development/app/models/concerns/sluggable.rb#L9-L11
它适用于更漂亮的网址。将使用字符串而不是整数ID。说
/tags/ruby-on-rails
而不是
/tags/123412341234
答案 2 :(得分:2)
这只是一种创建用户友好网址的方法:
http://example.com/states/washington
而不是:
http://example.com/states/4323454