我正在使用以下内容:
gem 'friendly_id', github: 'FriendlyId/friendly_id', branch: 'master'
我正在我的 Rails 4 网站上创建一个文章部分。我遇到的问题是,当我更改现有文章的名称时,slug 不会更新。
这是我到目前为止所拥有的:
extend FriendlyId
friendly_id :name, use: :slugged
add_column :articles, :slug, :string
add_index :articles, :slug, unique: true
在FriendlyId 4(Rails 3兼容)中有一个方法
should_generate_new_friendly_id?
您可以在模型上定义它来控制何时重新生成 slug。
尝试
def should_generate_new_friendly_id?
name_changed?
end
当名称更改时重新生成 slug。
EDIT
FriendlyId 版本 5(兼容 Rails 4)不再在保存时重新生成 slugs。要恢复此功能,您可以将 slug 列设置为nil
在保存或使用上面提供的解决方案之前。
EDIT 2
您需要覆盖 slug setter 以便您的保存适用于本文档中引用的 Rails 5issue https://github.com/norman/friendly_id/issues/488.
将其添加到模型文件中
def slug=(value)
if value.present?
write_attribute(:slug, value)
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)