如果我们必须在更新相关记录时为模型生成slug,我们该怎么办?例如,我使用的是User和UserProfile模型,slug是user.user_profile.name。创建新用户时,还会保存关联的user_profile。为新用户记录生成slug。但是当更新user_profile并更改名称时,不会更新slug。请帮忙。
答案 0 :(得分:1)
在最新版本的friendly_id中,您可以定义一个方法来指定何时重新生成slug(尽管这可能不是您需要的):
def should_generate_new_friendly_id?
name_changed? || super
end
您可以在UserProfile类上使用after save回调将slug设置为nil并强制friendly_id重新生成slug:
if name_changed?
user.slug = nil
user.save
end
,应该照顾它
答案 1 :(得分:-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