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更新模型的方法,如上面列出的控制器中的示例代码所示。查看 Rails 文档,我想知道为什么update不首选该方法,尤其是因为它的命名如此合乎逻辑。

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 更好 - 1.xs 中的最后一个,如果我没记错)。

于 2009-05-08T15:15:30.767 回答
0

使用 update_attributes 方法只是假设您已经有一个对象,并且您只需传递一组属性。工作完成了!

于 2012-09-20T14:09:44.347 回答