Le chapitre 14 du didacticiel Rails a quelques thèmes pour étendre ses fonctionnalités à ceux qui ont terminé le didacticiel. Je conteste la fonction de réponse, qui est le premier thème. Je travaille toujours dessus, mais je le posterai aussi loin que possible.
Les exigences sont rédigées comme suit.
Twitter a une fonctionnalité qui vous permet de répondre à un utilisateur en entrant le nom de connexion de l'utilisateur après le signe @ lors de la saisie du micro-message. Ce message n'est visible que par le fil du destinataire et par les personnes qui vous suivent. Implémentons une version simple de cette fonctionnalité de réponse. Plus précisément, @reply ne doit apparaître que dans le flux du destinataire et celui de l'expéditeur.
Des conseils de spécifications sont également écrits.
Pour implémenter cela, je pense que vous devez ajouter la colonne in_reply_to de la table microposts et une portée d'inclusion_replies supplémentaire au modèle Micropost.
Décomposez vos besoins en particulier.
・ @Reply est affiché par les trois parties suivantes Destinataire de la réponse Expéditeur de la réponse (soi-même) Répondre aux abonnés de l'expéditeur
Non visible pour les utilisateurs autres que ceux ci-dessus
-Lorsque "nom de connexion de l'utilisateur @reply" est entré au début du micro-message, ce message est considéré comme une réponse.
Quand j'ai relu "6.2.5 Unicité de l'adresse e-mail" dans le didacticiel, il était écrit s'il fallait faire la distinction entre les majuscules et les minuscules. Si le nom d'utilisateur doit être sensible à la casse ou si Taro et TARO doivent être différents. Découvrez comment Twitter est sur le net.
Bien que ce soit le même en interne, il y avait de nombreux articles sur lesquels il était divisé au moment de la saisie. Je n'ai pas trouvé l'article que j'écrivais. Je vais le faire avec les mêmes spécifications que Mead.
J'ai décidé d'ajouter cette fonctionnalité de cas plus tard plutôt que depuis le début. Cela semblait facile à ajouter plus tard.
C'est similaire aux fonctionnalités que nous avons ajoutées précédemment, alors relisez quelles fonctionnalités sont similaires.
Similaire à la fonction du micropost au chapitre 13 Similaire à la fonction d'enregistrement des utilisateurs au chapitre 6.7 6.2.5 Vérifier l'unicité Unicité de l'adresse e-mail
Sur la base du résultat, nous avons considéré les fonctions suivantes.
-Ajout d'une fonction au modèle qui peut juger d'afficher ou non par réponse Si ce message est une réponse -Ajout de la fonction pour déterminer l'entrée de @reply pour afficher ou contrôler -Ajouté au modèle et à la vue afin que le nom d'utilisateur soit unique
Nous avons décidé d'ajouter la dernière fonctionnalité "nom d'utilisateur unique" plus tard plutôt que de partir du début. C'est parce que j'ai pensé que je devrais d'abord créer quelque chose qui ne fonctionne qu'avec des données de test uniques, puis ajouter une fonction de contrainte qui le rendra unique plus tard.
Relisez le chapitre 14, 14.1.1. C'était un parent entre les identifiants.
Je pense que j'ai besoin d'ajouter une colonne in_reply_to dans la table microposts et une portée d'inclusion_replies supplémentaire au modèle Micropost.
Pensez à la façon de changer le modèle avec l'indice.
microposts
Nom de colonne | attribut |
---|---|
id | integer |
content | text |
user_id | integer |
in_reply_to | integer |
created_at | datetime |
updated_at | datetime |
Quel serait le type si nous ajoutions une colonne pour in_reply_to? Je pensais que c'était la même chose que id et integer car il identifie quel utilisateur.
S'il faut ajouter une méthode micropost ou modifier une méthode existante. Reportez-vous au tableau 13.1 user.micrposts Modifications existantes qui remplacent l'ensemble des micro-messages utilisateur user.microposts.build (arg) Modification existante qui renvoie un nouvel objet Micropost associé à l'utilisateur user.microposts.find_by (id: 1) Modification existante pour rechercher des microposts associés à l'utilisateur et ayant l'ID 1.
Pensez à ajouter une méthode de réponse. user.microposts.create (arg, reply: user2) Créer un micro-message de réponse à user2 Nous décidons de modifier la méthode de création existante.
Il existe deux écrans principaux, l'un pour saisir une réponse et l'autre pour afficher une réponse.
Je pensais que je n'avais pas besoin d'augmenter le nombre d'éléments d'entrée, car j'ai mis @reply au début du contenu.
Avez-vous besoin d'un écran de réponse uniquement pour la sortie? Vérifiez Twitter. Si vous cliquez sur le Tweet d'origine, la réponse passera à un autre écran et la liste des réponses s'affichera. Les tweets du parent et de l'enfant de la réponse sont affichés dans une liste.
C'est un peu compliqué, donc je n'irai pas aussi loin cette fois, et je vais l'afficher sur le même écran que le Tweet original.
L'image à l'écran n'est que du texte car il est difficile de faire une simulation. comment box : @reply michael Cum aspermatur ..
Afficher l'image du flux @reply michael Cum aspermatur ..
Si le user_id n'est pas trouvé, la conception conviviale affichera une erreur pendant que vous tapez. Je vais montrer l'erreur car elle doit être vérifiée lors de la création.
Que faire si user_id est supprimé après la publication? Dois-je supprimer ce micropost? Je pense qu'il vaut mieux ne laisser que le micropost qui a été répondu à la personne qui n'est plus là, et je pense que le micropost ne sera pas supprimé.
3,0 heures du 27/09 au 01/10.
Recommended Posts