2013-04-11 50 views
1

如果我們必須在更新關聯記錄時爲模型生成slug,我們應該怎麼做。例如,我正在使用User和UserProfile模型,而slug則是user.user_profile.name。當新用戶被創建時,關聯的user_profile也被保存。爲新的用戶記錄生成段塞。但是,當更新user_profile並更改名稱時,slug不會更新。請幫忙。friendly_id gem使用關聯的模型字段

回答

0

您可以覆蓋should_generate_new_friendly_id?方法。這樣您就可以控制何時產生新的slu slu。

你可以做這樣的事情

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 
1

在最近的版本friendly_id的,你可以定義一個方法(你需要什麼,儘管這可能不是)來指定何時再生毛坯:

def should_generate_new_friendly_id? 
    name_changed? || super 
    end 

你可以使用一個保存後回調的用戶配置類設置散熱片至零,力friendly_id再生毛坯:

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

根據文檔應該照顧它:http://norman.github.io/friendly_id/