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