friendly_id gem使用关联的模型字段

时间:2013-04-11 09:30:22

标签: ruby-on-rails friendly-id

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

2 个答案:

答案 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

根据文档http://norman.github.io/friendly_id/

,应该照顾它

答案 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