Tengo una pregunta muy nueva. ¿Cómo puedo verificar que el objeto del modelo sea válido con nuevos parámetros ANTES de actualizarlo?Rieles 3: compruebe que el objeto sea válido con params antes de la actualización
Quiero transformar esa:
def update
@obj = SomeModel.find(params[:id])
if @obj.update_attributes(params[:obj])
# That have been updated
else
# Ups, errors!
end
end
Para algo así:
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
Después de @ obj.attributes (params [: obj]), llame a @ obj.save. –
El método 'attributes()' como se muestra en esta respuesta en el momento de escribir esto está en desuso. En su lugar, use 'assign_attributes (new_attributes)' o el alias 'attributes = (new_attributes)'. Por lo tanto, la primera línea en esta respuesta debe ser '@ obj.assign_attributes (params [: obj])'. Ver [ActiveRecord :: AttributeAssignment] (http://api.rubyonrails.org/classes/ActiveRecord/AttributeAssignment.html) – user664833
Re: 'assign_attributes (new_attributes)' - tenga en cuenta que * los únicos atributos establecidos son los nombrados por las teclas en el params hash *. Entonces, si tiene un objeto existente, puede agregar/fusionar solo un subconjunto de atributos. – user664833