Forum: Rails France optimiser les updates

Posted by Tranquiliste (Guest)
on 2009-06-13 01:01
(Received via mailing list)
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
Posted by Nicolas Blanco (slainer68)
on 2009-06-13 01:38
(Received via mailing list)
Salut,

http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002293
@+
Nicolas.

Le 13 juin 2009 01:00, Tranquiliste<nicolas.aguttes@googlemail.com> a 
écrit :
Posted by Tranquiliste (Guest)
on 2009-06-13 09:53
(Received via mailing list)
RTFM comme on dit ...

Merci
Posted by Cyril Mougel (shingara)
on 2009-06-13 10:30
(Received via mailing list)
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 Mougel
http://blog.shingara.fr
Posted by Martin Catty (Guest)
on 2009-06-13 11:40
(Received via mailing list)
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 Catty || fuse
http://www.noremember.org
Posted by Michel Belleville (Guest)
on 2009-06-15 09:26
(Received via mailing list)
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 Belleville


2009/6/13 Martin Catty <martin@noremember.org>
Posted by Fernando Perez (fernando)
on 2009-06-15 23:53
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.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.