models and migrations setup with associations and validations