[解決済み】Rails: #update_attributeと#update_attributesの比較
質問
obj.update_attribute(:only_one_field, 'Some Value')
obj.update_attributes(field1: 'value', field2: 'value2', field3: 'value3')
これらは両方とも、ActiveRecordに明示的に更新を指示しなくても、オブジェクトを更新することができます。
Rails APIによると。
<ブロッククオート属性更新
単一の属性を更新し、通常の検証手順を経ずにレコードを保存します。これは、特に既存のレコードのブール値フラグに対して有効です。バリデーションモジュールがデフォルトで組み込まれている場合、Base の通常の update_attribute メソッドはこのメソッドに置き換わります。
更新された属性
渡されたHashからすべての属性を更新し、レコードを保存します。オブジェクトが無効な場合は、保存に失敗し、falseが返されます。
つまり、オブジェクトを検証させたくない場合は、以下のようにします。
#update_attribute
. もし、この更新を
#before_save
スタックオーバーフローしますか?
私の質問は
#update_attribute
は保存前もバイパスするのか、それとも検証だけなのか。
また、ハッシュを
#update_attributes
... 一番上にある私の例を見てください。
解決方法は?
をご参照ください。
update_attribute
. ソースを表示 をクリックすると、次のようなコードが表示されます。
# File vendor/rails/activerecord/lib/active_record/base.rb, line 2614
2614: def update_attribute(name, value)
2615: send(name.to_s + '=', value)
2616: save(false)
2617: end
を参照し、次に
update_attributes
そのコードを見てください。
# File vendor/rails/activerecord/lib/active_record/base.rb, line 2621
2621: def update_attributes(attributes)
2622: self.attributes = attributes
2623: save
2624: end
2つの違いは
update_attribute
用途
save(false)
一方
update_attributes
用途
save
または、次のように言うことができます。
save(true)
.
長い説明で申し訳ありませんが、私が言いたいことは重要です。
save(perform_validation = true)
もし
perform_validation
が false の場合、すべての
バリデーション
に関連する
save
.
2番目の質問について
また、update_attributesにハッシュを渡す正しい構文は何でしょうか...冒頭の私の例を見てください。
あなたの例は正しいです。
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
または
Object.update_attributes :field1 => "value", :field2 => "value2", :field3 => "value3"
または、すべてのフィールドのデータ & 名をハッシュで取得する場合、次のようになります。
params[:user]
ここでは単に
Object.update_attributes(params[:user])
関連
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Rails update_attributes without save?
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] RubyとRailsの "Date.today "フォーマット
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] レイル 4 radio_button_tag default not selected
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController
-
[解決済み] 未初期化の定数 "コントローラ名"