2012-04-09 6 views
17

これは愚かな問題のようですが、私はどこでも答えを見つけることができません!update_attributesの検証をスキップできますか?

update_attributes()になり、save(validate: false)のように検証をスキップできますか?

私は長めのフォームを持っていて、長めのtextstringではなく)のフィールドを持っています。フォームに進捗状況を保存する機能を提供したいと思います。通常、回答を提出して移動する前に、長さの最小値などを求めますが、「保存」をクリックするだけの場合は、進捗状況を入力してくださいデータベースに戻って後で終了することができます。この場合の検証をスキップする方法はありますか?

見回しから、私が行うことができる唯一のことは、それほどのように個別に各フィールドを列挙しているようだ:

@obj.field1 = ... 
@obj.field2 = ... 
@obj.field3 = ... 
... 
@obj.save(:validate => false) 

はそれが本当にケースですか?将来、ある時点で別のフィールドを追加してコントローラを更新することを忘れてしまうのではないかと心配しています。 Railsのための

+0

も参照してください[この質問](http://stackoverflow.com/questions/2998780/how-to-update-attributes-without-validation) 1つの属性のみを更新している場合 –

答えて

28
@obj.attributes = params[:obj] 
@obj.save(false) 

アップデート3

@obj.attributes = params[:obj] 
@obj.save(:validate => false) 
+0

ああ、それがやった!ありがとう、非常に簡単です。 –

+25

それは@ obj.save(validate:false)でなければなりません – thekindofme

+2

これは特定の検証@thekindofmeだけで行うことができますか? –

関連する問題