Rails 4 友好 ID Slug 未更新

2023-12-25

我正在使用以下内容:

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(使用前将#替换为@)

Rails 4 友好 ID Slug 未更新 的相关文章

随机推荐