2016-04-13 13 views
0

実際には例はありませんが、ActiveRecordデータベースに、指定されたID以外の固有の属性を持っていない新しいレコードを作成するフォームがあります。ユーザーは自分のフォームを送信していますが、ミスタイプしたと気付いたので、ブラウザの戻るボタンを押して同じコンテンツを再送信しています。そのため、そのレコードが重複しています。Railsでのレコード重複の防止

私はこのことが起こらないようにしたい、コードを投稿する必要はない、私はちょっとした提案がほしい。

ありがとうございます!

+1

複数の属性に基づいて一意性を検証します。 –

+0

activerecordとは無関係の提案は、ユーザーが提出する前に自分のタイプミスを見ることができるように "submit submission"ボタンを追加することです –

答えて

1

レコードのモデルでは、this Rails Guideのように一意性検証を追加します。その検証にスコープを適用して、一意性が複数のレコード属性を使用して決定されるようにすることができます。

また、これらのレコードを一意にする必要がない場合は、ユーザーが投稿後のレコード作成ページに投稿を更新する簡単な方法を追加します。つまり、新しいレコードを追加すると、そのレコードを編集する機能が即座に表示されるので、新しいレコードを作成して作成するのではなく、作成したレコードを更新します。

+0

1分前に自分の答えを削除しました:) +1 –

+0

モデル内の唯一性の検証が不十分で、データベース内になければならない、または競合状態になる可能性があります。 –

関連する問題