Rails:如果已经采用固定链接,则将数字附加到永久链接

时间:2011-07-10 16:19:47

标签: ruby-on-rails unique slug permalinks validates-uniqueness-of

如果已经有 ,我想给 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 ,然后正常保存用户?

1 个答案:

答案 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。,这种方式也会受到竞争条件的影响。