Railsで重複レコードを防ぐ正しい方法
概要
私のモデルにはこれがあります:
validates :name, :presence => true, :uniqueness => true
私のコントローラーには次のものがあります:
...
if @location.save
format.html { redirect_to @location, :notice => 'Location was successfully created.' }
format.json { render :json => @location, :status => :created }
...
これにより、テーブル内にこの名前のレコードが存在しない場合、レコードが正常に作成されます。 DB 制約に依存するのではなく、重複する可能性のあるレコードを挿入する前にチェックすることをお勧めします。
コントローラーに何かを追加して確認する必要があるでしょうか?これを行う正しい方法は何ですか?
どうもありがとう。
解決策
データベースに一意のインデックスを追加します。そうすることで、何かがモデルの検証をすり抜けた場合 (まれですが技術的には可能です)、データベースに保存するクエリは失敗します。