Ho una domanda da principianti. Come posso verificare che l'oggetto del modello sia valido con i nuovi parametri PRIMA di aggiornarlo?Rails 3 - controlla che l'oggetto sia valido con params prima dell'aggiornamento
voglio trasformarla:
def update
@obj = SomeModel.find(params[:id])
if @obj.update_attributes(params[:obj])
# That have been updated
else
# Ups, errors!
end
end
Per una cosa del genere:
def update
@obj = SomeModel.find(params[:id])
if @obj.valid_with_new_params(params[:obj])
@obj.update_attributes(params[:obj])
else
# Ups, errors!
end
end
Dopo @ obj.attributes (params [: obj]), chiama @ obj.save. –
Il metodo 'attributes()' come mostrato in questa risposta al momento della stesura di questo articolo è deprecato. Usa invece 'assign_attributes (new_attributes)' o l'alias 'attributes = (new_attributes)'. Quindi la prima riga di questa risposta dovrebbe essere '@ obj.assign_attributes (params [: obj])'. Vedi [ActiveRecord :: AttributeAssignment] (http://api.rubyonrails.org/classes/ActiveRecord/AttributeAssignment.html) – user664833
Re: 'assign_attributes (new_attributes)' - nota che * gli unici attributi impostati sono quelli nominati con le chiavi in l'hash dei parametri *. Quindi se hai un oggetto esistente, puoi aggiungere/unire solo un sottoinsieme di attributi. – user664833