1

如果我们必须在其关联记录更新时为模型生成 slug,我们应该怎么做。例如,我正在使用模型 User 和 UserProfile,而 slug 是 user.user_profile.name。创建新用户时,也会保存关联的 user_profile。为新的用户记录生成 slug。但是当更新 user_profile 并更改名称时,slug 不会更新。请帮忙。

4

2 回答 2

1

在最新版本的 friendly_id 中,您可以定义一个方法来指定何时重新生成 slug(尽管这可能不是您需要的):

  def should_generate_new_friendly_id?
    name_changed? || super
  end

您可以在 UserProfile 类上使用保存后回调将 slug 设置为 nil 并强制 friendly_id 重新生成 slug:

if name_changed?
  user.slug = nil
  user.save
end

这应该根据文档处理它:http: //norman.github.io/friendly_id/

于 2015-08-28T18:22:39.603 回答
-1

您可以覆盖该should_generate_new_friendly_id?方法。通过这种方式,您可以控制何时生成新的 slug。

你可以做这样的事情

class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :my_friendly_id_method, :use => :slugged

  def should_generate_new_friendly_id?
    user_profile.changed?
  end
end
于 2013-04-11T09:49:19.857 回答