web-dev-qa-db-ja.com

Rails update_attributesメソッドは、データベース内のモデルの更新を行うための最良の選択ですか?

def update
  @album = Album.find(params[:id])
  if @album.update_attributes(params[:album])
    redirect_to(:action=>'list')
  else
    render(:action=>'edit')
  end    
end

私がカバーしているRails 1.1.6チュートリアルでは、上記のコントローラーのサンプルコードのように、モデルを更新するためにupdate_attributesメソッドを使用することをお勧めします。 Railsのドキュメントを見ると、特に論理的に名前が付けられているため、なぜupdateメソッドが好まれなかったのか疑問に思います。

17
pez_dispenser

Updateは、オブジェクトidパラメーターとupdate_attributes

だからこれ( AWDWR第3版 から)

Order.update(12, :name => "Barney", :email => "[email protected]")

と同等です

Order.find(12).update_attributes(:name => "Barney", :email => "[email protected]")

したがって、既知のIDの行を属性のセットで更新するだけの場合は、updateを使用しない理由はないと思います。それが彼らが書いた理由のようです。

(チュートリアルを1.1.6からアップグレードする方法はありますか?それはかなり古く、現在のリリースでは特に驚異的なリリースではありませんでした。1.2.6の方が優れていました-1.xsの最後の場合私は正しく覚えています)。

26
Mike Woodhouse

Update_attributesメソッドを使用すると、オブジェクトが既に存在し、属性のセットを渡すだけであると想定します。そして、作業は完了です!

0
babttz