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 :
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.