2012-05-27 16 views
4

試圖讓我的應用程序運行FriendlyId gem (version 4.0.1)Rails的FriendlyId和normalize_friendly_id

我覺得我在錯誤的順序這樣做,但我想創造一個新的紀錄時前我friendly_id slug is generated以去掉引號。但我認爲方法normalize_friend_id正在生成id後被調用。

我已經添加了以下到我的模型:

class Team < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, :use => :slugged 

    def normalize_friendly_id(string) 
    super.gsub("\'", "") 
    end 

end 

回答

9

super首先調用父類,這意味着正在生成友好的ID,然後在你運行該結果GSUB。你真正想要的是完全覆蓋這個方法。

參考:https://github.com/norman/friendly_id/blob/master/lib/friendly_id/slugged.rb#L244-246

你的代碼應該是這樣的:

def normalize_friendly_id(string) 
    string.to_s.gsub("\'", "").parameterize 
end 

def normalize_friendly_id(string) 
    super(string.to_s.gsub("\'", "")) 
end 

希望幫助