The model has no idea what action has caused it to be validated.
Either call save(false) which skips all validations, or let the model
know (eg have an instance variable which indicates which validations
can be skipped)
Not quite - update_attributes does the save for you, so this will save
twice (although the update_attributes might fail because of the
validation)
@object = Object.find(id)
@object.attributes = params[:object]
@object.save(false)