我想给John Doe永久链接 John - Doe -2,如果已经有 John - Doe -1。该数字应该是下一个要附加的空闲数字("john-doe-n")
目前我的永久链接是按常规方式生成的:
before_validation :generate_slug
private
def generate_slug
self.permalink = self.name.parameterize
end
如何实现一个validates_uniqueness_of类方法,将这种数字添加到self。永久链接然后正常保存用户?
首先,问问你自己:有没有更简单的方法来做到这一点?我相信有。如果你已经愿意给你的鼻涕虫添加数字,那么总是添加一个数字,比如ID,怎么样?
before_validation :generate_slug
private
def generate_slug
self.permalink = "#{self.id}-#{self.name.parameterize}"
end
这是一种非常健壮的方法,您甚至可以将段鼻涕虫直接传递给find
方法,这意味着您根本不需要保存段鼻涕虫。
否则,您可以检查名称+号码是否已经存在,并将n增加1,然后重新检查,直到找到一个空闲的号码。请注意,如果有很多具有相同名称的记录,这可能需要一段时间。如果同时生成两个slugs,这种方法也受竞争条件的影响。