Uma famosa plataforma de microblogging tem passado por maus bocados depois de uma recente aquisição. Os mais pessimistas preveêm que ela não sobreviverá por muito tempo e o seu cliente, contanto com isso, contratou você para desenvolver a nova plataforma que irá tomar o seu lugar: o Peeper.
- handle: O nome que os usuários usam para referenciar uns aos outros dentro da plataforma. É obrigatório, deve conter entre 4 e 12 caracteres, não pode se repetir e não pode conter espaços, acentos ou caracteres especiais, apenas letras, números e underscore (_).
- display_name: O nome de exibição do usuário. É obrigatório, deve conter no máximo 30 caracteres e pode conter qualquer caractere.
- bio: Texto livre de até 300 caracteres. É opcional.
- born_at: Data de nascimento do usuário. É obrigatório. O usuário precisa ter pelo menos 13 (anos) para criar a conta.
- um usuário pode ter vários status.
- um usuário pode seguir outros usuários.
- O usuário deve ser capaz de fazer upload de uma imagem para representar a sua conta.
- body: é o corpo da postagem. Texto livre de até 300 caracteres (mais que a concorrência!), obrigatório.
- um status pertence a um usuário.
- um status pode ser em resposta a outro status.
- um status pode ter entre 0 e 4 mídias.
- type: Define se a mídia é uma imagem ou um vídeo. É um campo inteiro, obrigatório.
- url: a URL que aponta para a mídia em questão.
- uma mídia pertence a um status.
- O usuários deve ser capaz de fazer upload da imagem ou vídeo da mídia.
- Podem usar o SQLite como banco de dados.
- Não usem scaffold.
- Não há necessidade de criar views nesse momento.
- Todos os models devem possuir testes unitários usando RSpec.
- Façam commits organizados.