コールバックで投稿のスラッグを作成していafter_create
ますが、スラッグが既に存在する場合に番号を末尾に追加する方法がわかりません。
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
たとえば、私の句が「Some title That is Different」というタイトルの投稿に一致するため、これは機能しません。
post.id
1 つの解決策は、列挙しようとする代わりに追加することです。これは、投稿が削除された場合にも適している可能性があります。しかし、投稿を削除するつもりはありません。また、ID を使用しない方が意味があるようです。
何かアドバイス?