2016-09-09 8 views
0

レコードを保存するときに、フォームでサブミットを停止し、エラーメッセージを表示する必要があります(私はsimple_formを使用します)。Railsコールバック - 条件が見つかった場合にサブミットを中止する方法

annotation.activeが保存するレコードに対してtrueに設定され、annotation.activeが真である他の注釈レコードが存在し、下のフィールドが保存するレコードと同じ値を持つ場合、レコードを保存/更新しないでください。

annotation.company 
annotation.documenttype 

ルビー/レール(私の最初のアプリ)の新機能です。レコードのフィールドに対する基本レール検証(例:存在が真)を使用している間に、レールのコールバックまたは検証を使用して上記のチェックにアプローチする方法はありますか?

UPDATE

私は、コールバックにガイドを読んでいる、と私は正確にfalseを返します(作成、保存および更新に呼ばれる)私の「注釈」モデル内のメソッドを記述する必要があると思います。今、これらの質問があります:

  1. before_とaround_の違いは何ですか?
  2. コールバック(before_saveまたはaround_save?)がありますが、メソッドごとに複数のコールバックをリストする代わりに使用できますか?

答えて

0

このは、より具体的には

'validates_uniqueness_of' クラスメソッドを使用して解決することができます。

validates_uniqueness_of :active, scope: [:documenttype, :company] 

はjqueryのだろう

0

あなたは条件をチェックインするために、次のように提出することができます:

<script> 
     $("form").submit(function (e) { 
     if(!annotation.active){ //Your condition to check 
      e.preventDefault(); 
     } 
     }); 
    </script> 

あなたがRailsのに行く必要がある場合は、これを使用することができます。..あなたのhtml.erbファイルに

をこのコードを使用します

submit_tag "Pay", :disabled => !annotation.active 

または

+0

ルビーAPIドキュメント1を参照してください。私はレール/ルビーを使いたいです。 –

+0

更新された回答を参照してください –

+0

こんにちはGokul、バリデーションガイドに従ってレールバリデーションを行うのを手伝ってもらえないかと思います。 –

関連する問題