Manually maintaining DB integrity can be quite error prone and should generally be done via rules. For example, the current model doesn't use foreign key constraints and we have to manually code relationship integrity during deletion (eg. for wipeout. We should transition to declarative association modeling as much as possible.
GORM can automatically create and maintain the common associations: