2014-09-25 54 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