17
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、上記のコントローラーのサンプル コードのように、モデルを更新する方法を使用することを推奨しています。updateRailsのドキュメントを見ると、特に論理的に名前が付けられているため、なぜこのメソッドが好まれなかったのか疑問に思っています。

4

2 に答える 2

26

Updateは、オブジェクトidパラメータと属性のセットを受け取ります。それ以外の場合は。のように機能しupdate_attributesます。

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

Order.update(12, :name => "Barney", :email => "barney@bedrock.com")

と同等です

Order.find(12).update_attributes(:name => "Barney", :email => "barney@bedrock.com")

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

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

于 2009-05-08T15:15:30.767 に答える
0

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

于 2012-09-20T14:09:44.347 に答える