Optimiser les updates

Une petite question bête (ça faisait longtemps).
Pour créer un nouvel enregistrement je fais :
@model = Model.new(params[:model])

  • éventuellement quelques traitements et
    if @model.save
    redirect_to …
    else
    render ‘new’
    end

et pour un update?
@model = Model.find(params[:id])
et après ??
y a-t-il un moyen de modifier @model sans faire le save en même temps
(ce que fait le update_attributes) et sans écrire une ligne par
attribut

Nicolas

Salut,

@+
Nicolas.

Le 13 juin 2009 01:00, Tranquiliste[email protected] a
écrit :

RTFM comme on dit …

Merci

Le 13 juin 09 à 09:53, Tranquiliste a écrit :

RTFM comme on dit …

Sinon tu crées une méthode dans ton modèle qui prend X params et fait
l’update de ces params et save ensuite. En gros refaire son
update_attributes.


Cyril M.

Et pour un contrôle encore plus complet, tu peux mettre des restrictions
sur
les paramètres que tu ne veux pas modifier en groupe via
attr_accessible,
attr_protected, attr_readonly.

exemple :

class Toto < AR::B
attr_protected :password # pour éviter que n’importe qui fasse un update
de
masse en écrasant les passwords en ajoutant un un password dans les
paramètres de requête
attr_readonly :created_at # pour éviter que l’on modifie les timestamp
de
créations une fois l’entregistrement ajouté
end

Michel B.

2009/6/13 Martin C. [email protected]

Tranquiliste a écrit :

et pour un update?
@model = Model.find(params[:id])
et après ??
y a-t-il un moyen de modifier @model sans faire le save en même temps
(ce que fait le update_attributes) et sans écrire une ligne par
attribut

Si tu veux éviter de faire la sauvegarde en même temps, tu peux
simplement faire:

@model.attributes = params[:model]

Ça aura pour effet de faire un merge de tes paramètres existants avec
les nouvelles valeurs.


Martin C. || fuse
http://www.noremember.org

Tranquiliste wrote:

RTFM comme on dit …

Merci

En pratique new et update_attributes sont quand même peu utilisés donc
lire le manuel ne va pas l’aider.