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

Un tutorial de Rails 1.1.6 que estoy cubriendo recomienda utilizar el método update_attributes para actualizar un modelo, como en el código de ejemplo de mi controlador enumerado anteriormente. En cuanto a la documentación de Rails, me pregunto por qué el método update no se hubiera preferido, especialmente dado que su nombre es lógico.¿Es el método Rails update_attributes la mejor opción para realizar una actualización de un modelo en la base de datos?

+1

Este artículo sobre * [5 formas de establecer atributos en ActiveRecord] (http://www.davidverhasselt.com/2011/06/28/5-ways-to-set-attributes-in-activerecord/) podría de interés. – JJD

Respuesta

25

La actualización toma un objeto id parámetro y un conjunto de atributos que de lo contrario funcionan como update_attributes.

Así que este (de AWDWR 3rd edition)

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

es equivalente a

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

Así que si lo que quieres hacer es actualizar una fila de identificación conocida, con un conjunto de atributos entonces yo dicen que no hay razón para no usar update - ¡parece que esa es la razón por la que lo escribieron!

(¿Hay alguna manera de que pueda obtener su tutorial para actualizar desde 1.1.6? Es bastante viejo y no era un lanzamiento particularmente estremecedor cuando era actual. 1.2.6 era mejor - el último de los 1 .xs, si no recuerdo mal).

+1

Gracias por el fragmento de código: tiene sentido. No, no es actualizable, desafortunadamente. Es una serie de videos de lynda.com; en realidad es una muy buena introducción a Rails para mí, aunque probablemente necesite leer un texto más actualizado una vez que lo termine. Primero necesito comprender la gran imagen, con la que había estado teniendo problemas después de leer el libro de O'Reilly "Head First Rails" unos meses atrás. –

0

Al utilizar el método update_attributes solo suponga que ya tiene un objeto, y simplemente pasaría el conjunto de atributos. ¡Y el trabajo está hecho!

Cuestiones relacionadas