Add validation methods to post, refactor post view to use a partial