如果已经有 ,我想给 John Doe 永久链接 john-doe-2 约翰-DOE-1 即可。 该数字应该是下一个要附加的免费(“john-doe- n ”)
目前我的永久链接是以通常的方式生成的:
before_validation :generate_slug
private
def generate_slug
self.permalink = self.name.parameterize
end
如何实现 validates_uniqueness_of 类似方法,将此类数字添加到 self.permalink ,然后正常保存用户?
答案 0 :(得分:3)
首先,问问自己:有更简单的方法吗?我相信有。如果你已经愿意为你的slug添加数字,那么如何总是添加一个数字,比如ID?
before_validation :generate_slug
private
def generate_slug
self.permalink = "#{self.id}-#{self.name.parameterize}"
end
这是一种非常强大的方法,你甚至可以直接将slug传递给find
方法,这意味着你根本不需要保存slug。
否则,您只需检查名称+号码是否已存在,并将n递增1,然后重新检查,直至找到空闲号码。请注意,如果有大量具有相同名称的记录,则可能需要一段时间。如果同时生成两个slu。,这种方式也会受到竞争条件的影响。