2014-09-25 16 views
1

在我的模型時,使用ID裏面塞,我有以下幾點:使用FriendlyID

friendly_id :id_and_title, use: [:slugged, :finders] 

... 

def id_and_title 
    "#{self.id}-#{self.title}"[0,100] 
end 

然而,創造了新的記錄時,該ID未在塞領域。

目前我在做什麼是:

after_save :regenerate_slug 

... 

def regenerate_slug 
    self.slug = nil 
    self.save 
end 

,我不知道是否有這樣做的任何其他方式?

+1

你的再生廢料方法可能導致無限循環,你應該改變它。 – 2014-09-25 10:07:21

+1

如果您運行此代碼,現在會發生什麼? – 2014-09-25 10:08:31

回答

0

所以問題是friendly_id直到記錄創建之後才能訪問「id」。這裏的問題是after_save導致無限重現,就像Michal說的那樣,因爲它叫保存。

您應該使用after_create來代替。你只需要做一次。在記錄的所有後續更新中,id應該可用於friendly_id提取。

@ user3062913擁有它這裏的解決方案: Rails4 Friendly_id Unique Slug Formatting

+0

順便說一下,你的問題幫助我解決這個問題時,我有同樣的問題,所以謝謝! – 2014-12-05 02:20:52

相關問題