Skip to content

Instantly share code, notes, and snippets.

@samflores
Last active January 30, 2023 17:35
Show Gist options
  • Save samflores/f1e0a656222b217756934aa641b2c0d8 to your computer and use it in GitHub Desktop.
Save samflores/f1e0a656222b217756934aa641b2c0d8 to your computer and use it in GitHub Desktop.

Introdução ao Rails - Peeper

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.

Modelos

User

Campos

  • 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.

Associações

  • um usuário pode ter vários status.
  • um usuário pode seguir outros usuários.

Requisitos extra

  • O usuário deve ser capaz de fazer upload de uma imagem para representar a sua conta.

Status

Campos

  • body: é o corpo da postagem. Texto livre de até 300 caracteres (mais que a concorrência!), obrigatório.

Associações

  • 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.

Media

Campos

  • 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.

Associações

  • uma mídia pertence a um status.

Requisitos extra

  • O usuários deve ser capaz de fazer upload da imagem ou vídeo da mídia.

Requisitos

  • 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment