The standard way to deal with this in AR would be to rollback the specific migration that failed.  Migrations remain atomic in that way.  If migrations do not have the ability to be rolled back and an error has the potential to break the front-end then we should fail the migration but make sure that running the migration multiple times does not introduce any issues.

An unexpected nil in a model/controller/view could cause the app to throw an error.