Ruby on rails 使用FriendlyID时,请使用slug中的ID

Ruby on rails 使用FriendlyID时,请使用slug中的ID,ruby-on-rails,friendly-id,Ruby On Rails,Friendly Id,在我的模型中,我有以下内容: friendly_id :id_and_title, use: [:slugged, :finders] ... def id_and_title "#{self.id}-#{self.title}"[0,100] end 但是,在创建新记录时,ID不会在slug字段上使用 我目前正在做的是: after_save :regenerate_slug ... def regenerate_slug self.slug = nil se

在我的模型中,我有以下内容:

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

...

def id_and_title
    "#{self.id}-#{self.title}"[0,100]
end
但是,在创建新记录时,
ID
不会在slug字段上使用

我目前正在做的是:

after_save :regenerate_slug

...

def regenerate_slug
    self.slug = nil
    self.save
end

我想知道是否还有其他方法可以做到这一点?

所以问题是,友好id在创建记录之前无法访问“id”。这里的问题是after_save会导致无限重复,就像Michal说的,因为它调用save

您应该改用after_create。你只需要做一次。在记录的所有后续更新中,该id应可供friendly_id获取

@user3062913的解决方案如下:

您的REGENATE slug方法可能会导致无限重复,您应该更改它。如果您运行此代码,现在会发生什么?顺便说一句,您的问题在我遇到相同问题时帮助我解决了这个问题,谢谢!