自分で答えを見つけることができなかったレールの質問があります。非常に単純または明白である場合は申し訳ありませんが、私はここでは完全な初心者です。
そのため、データベースに :client_code という列があり、モデルでは :first_name と :last_name の最初の文字を小文字で連結したものとして定義されています。たとえば、新しいフォームを開き、:first_name に「John」、:last_name に「Doe」と入力すると、:client_code には自動的に「jdoe」の値が与えられます。モデル コードの関連部分は次のとおりです。
class Client < ActiveRecord::Base
before_validation :client_code_default_format
validates_presence_of :first_name, :last_name, :email
validates_uniqueness_of :client_code
...
def client_code_default_format
self.client_code = "#{first_name[0]}#{last_name}".downcase
end
end
このコードに何かを追加して、誰かがまったく同じ名前で別のクライアントに入った場合に、一意性の検証に失敗せず、代わりにわずかに変更された :client_code (「jdoe2」、たとえば)。おそらく、それらすべてにインデックスを追加する方法を理解できますが、重複の場合のフェールセーフとして数字のみを含めることをお勧めします。誰かが私を正しい方向に向けることができますか?