我正在为after_create
回调中的 Posts 创建一个 slug,如果 slug 已经存在,我不确定如何在末尾附加一个数字。
class Post < ActiveRecord::Base
attr_accessible :body, :title, :slug
after_create :create_slug
validates_uniqueness_of :slug
def create_slug
existing = Post.where("slug LIKE ?", "#{title.parameterize}%").length
existing > 0 ? slug = "#{title.parameterize}-#{existing+1}" : slug = title.parameterize
self.update_attributes(slug: slug)
end
end
这不起作用,因为我的where
子句匹配标题为“某些不同的标题”的帖子,例如。
一种解决方案是追加post.id
而不是尝试枚举。如果帖子被删除,这也可能会更好。但我不希望删除任何帖子,而且不使用 ID 似乎更有意义。
有什么建议吗?