2

すでにjohn-doe-1がある場合は、John Doeにパーマリンクjohn-doe-2を付けたいと思います。番号は、追加する次の空き番号にする必要があります("john-doen- n ")

現在、私のパーマリンクは通常の方法で生成されています:

before_validation :generate_slug  
private
def generate_slug   
  self.permalink = self.name.parameterize
end

この種の番号をself.permalinkに追加し、ユーザーを通常どおり保存するvalidates_uniqueness_ofのようなメソッドを実装する方法は?

4

1 に答える 1

3

まず、自問してみてください。これを行うためのより簡単な方法はありますか? あると思います。スラッグに数字を追加する意思がある場合は、常に ID などの数字を追加するのはどうですか?

before_validation :generate_slug

private
def generate_slug
  self.permalink = "#{self.id}-#{self.name.parameterize}"
end

これは非常に堅牢な方法であり、スラッグをメソッドに直接渡すこともできfindます。つまり、スラッグを保存する必要はまったくありません。

それ以外の場合は、名前 + 番号が既に存在するかどうかを確認し、n を 1 ずつ増やしてから、空いている番号が見つかるまで再確認します。同じ名前のレコードが多数ある場合、これには時間がかかる場合があることに注意してください。2 つのスラッグが同時に生成されている場合、この方法でも競合状態が発生します。

于 2011-07-10T16:29:43.390 に答える