2012-04-26 7 views
2

私は、Railsでmodel.update_attribute :foo, 'bar'を呼び出すことができ、モデルの残りの部分を検証せずにdb内の1つの属性のみを更新することを知っています。これにより、1つのSQLトランザクションが発生します。Rails:検証なしで複数の属性を更新する、1 SQLトランザクション

.update_attributesで複数の属性を設定することもできますが、検証はスキップできません。

.save(:validate=>false)に電話し、検証なしでモデルを更新することができます。ただし、これを特定の列に限定するのではなく、モデルのすべての属性を現在の状態に保存します。

私の質問は、モデル上に複数の値を設定する方法はありますが、それらのすべてではなく、検証をトリガーすることなく、単一のSQLトランザクションで設定できますか?

答えて

8

アトリビュートを設定してから、save:validate => falseと呼ぶのはなぜですか?

@record.attributes = your_hash # won't nil non-mentioned attributes, as you expect it to 
@record.save :validate => false 
+0

[OK]を、しかし、ユーザーがフォームを経由して相互作用していると仮定し、私は彼らが基本的にはドラフト状態にありますしながら、モデルの「分類」の属性を設定できるようにしたいと有効でない場合があります。 save(false)を呼び出すと、設定されている他のattrsのいずれかが保存されます... – Andrew

+0

...ハッシュで設定したい属性のみをスライスすると言っているのでしょうか?それはおそらく動作する可能性があります... – Andrew

関連する問題