Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 1) erstellt.

Informationen zu Erweiterungen finden Sie in Kapitel 14 des Rails-Lernprogramms

Kapitel 14 des Rails-Lernprogramms enthält einige Themen, mit denen die Funktionalität für diejenigen erweitert werden kann, die das Lernprogramm abgeschlossen haben. Ich fordere die Antwortfunktion heraus, die das erste Thema ist. Ich arbeite noch daran, aber ich werde es veröffentlichen, so weit ich kann.

Überprüfen Sie die Anforderungen und Spezifikationen

Die Anforderungen sind wie folgt geschrieben.

Twitter verfügt über eine Funktion, mit der Sie einem Benutzer antworten können, indem Sie den Anmeldenamen des Benutzers nach dem @ -Zeichen eingeben, während Sie den Mikropost eingeben. Dieser Beitrag ist nur für den Feed des Empfängers und für die Personen sichtbar, die Ihnen folgen. Lassen Sie uns eine einfache Version dieser Antwortfunktion implementieren. Insbesondere sollte @reply nur im Feed des Empfängers und im Feed des Absenders erscheinen.

Technische Hinweise werden ebenfalls geschrieben.

Um dies zu implementieren, müssen Sie meiner Meinung nach die Spalte in_reply_to der Mikroposttabelle und einen zusätzlichen Bereich include_replies zum Mikropostmodell hinzufügen.

Teilen Sie Ihre Anforderungen spezifisch auf.

・ @Reply wird von den folgenden drei Parteien angezeigt Empfänger der Antwort Antwort Absender (selbst) Antworten Sie auf Absender-Follower

Für andere Benutzer als die oben genannten nicht sichtbar

-Wenn zu Beginn des Micropost "@reply user's login name" eingegeben wird, wird dieser Beitrag als Antwort gewertet.

Tauchen Sie tief in die Spezifikationen ein und suchen Sie nach Verweisen auf das abgebildete Twitter

Als ich im Tutorial "6.2.5 Eindeutigkeit der E-Mail-Adresse" zurücklas, wurde geschrieben, ob zwischen Groß- und Kleinschreibung unterschieden werden soll. Ob der Benutzername zwischen Groß- und Kleinschreibung unterscheiden soll oder ob Taro und TARO unterschiedlich sein sollen. Finden Sie heraus, wie Twitter im Internet ist.

Obwohl es intern dasselbe ist, gab es viele Artikel, die zum Zeitpunkt der Eingabe geteilt wurden. Ich konnte den Artikel, den ich schrieb, nicht finden. Ich werde es mit den gleichen Spezifikationen wie Mead machen.

Ich habe mich entschieden, diese Fallfunktion später als von Anfang an hinzuzufügen. Es schien einfach, später hinzuzufügen.

Welche Art von Funktion ausgeführt werden soll, ähnelt der zuvor hinzugefügten Funktion. Lesen Sie sie daher zurück

Es ähnelt den zuvor hinzugefügten Funktionen. Lesen Sie also zurück, welche Funktionen ähnlich sind.

Ähnlich der Funktion des Mikroposts in Kapitel 13 Ähnlich wie bei der Benutzerregistrierungsfunktion in Kapitel 6.7 6.2.5 Überprüfen Sie die Eindeutigkeit Eindeutigkeit der E-Mail-Adresse

Basierend auf dem Ergebnis haben wir die folgenden Funktionen berücksichtigt.

Wir haben uns entschlossen, die endgültige Funktion "Benutzername eindeutig" später hinzuzufügen, anstatt von vorne zu beginnen. Dies liegt daran, dass ich dachte, ich sollte zuerst etwas erstellen, das nur mit eindeutigen Testdaten funktioniert, und dann eine Einschränkungsfunktion hinzufügen, die es später eindeutig macht.

Modell für detailliertes Funktionsdesign

Lesen Sie Kapitel 14, 14.1.1 erneut. Es war ein Verwandter zwischen den Ausweisen.

Ich denke, ich muss der Microposts-Tabelle eine in_reply_to-Spalte und einen zusätzlichen include_replies-Bereich zum Micropost-Modell hinzufügen.

Überlegen Sie, wie Sie das Modell mit dem Hinweis ändern können.

microposts

Spaltenname Attribut
id integer
content text
user_id integer
in_reply_to integer
created_at datetime
updated_at datetime

Was wäre der Typ, wenn wir eine Spalte für in_reply_to hinzufügen würden? Ich dachte, es sei dasselbe wie id und integer, weil es den Benutzer identifiziert.

Methode zum detaillierten Entwerfen der Funktion

Gibt an, ob eine Mikropost-Methode hinzugefügt oder eine vorhandene Methode geändert werden soll. Siehe Tabelle 13.1 user.micrposts Bestehende Änderungen, die den Satz von User-Mikroposts ersetzen user.microposts.build (arg) Vorhandene Änderung, die ein neues Micropost-Objekt zurückgibt, das dem Benutzer zugeordnet ist user.microposts.find_by (id: 1) Vorhandene Änderung zur Suche nach Mikroposts, die an den Benutzer gebunden sind und die ID 1 haben.

Überlegen Sie, ob Sie eine Antwortmethode hinzufügen möchten. user.microposts.create (arg, reply: user2) Erstellt einen Antwort-Mikropost für user2 Wir beschließen, die vorhandene Erstellungsmethode zu ändern.

Sehen Sie sich die Designfunktionen im Detail an

Es gibt zwei Hauptbildschirme, einen zum Eingeben einer Antwort und einen zum Anzeigen einer Antwort.

Ich dachte, dass ich die Anzahl der Eingabeelemente nicht erhöhen muss, weil ich am Anfang des Inhalts @reply geschrieben habe.

Benötigen Sie einen Nur-Antwort-Bildschirm für die Ausgabe? Überprüfen Sie Twitter. Wenn Sie auf den ursprünglichen Tweet klicken, wird die Antwort auf einen anderen Bildschirm verschoben und die Liste der Antworten wird angezeigt. Die Tweets des Elternteils und des Kindes der Antwort werden in einer Liste angezeigt.

Es ist ein bisschen kompliziert, also werde ich diesmal nicht so weit gehen und es auf dem gleichen Bildschirm wie der ursprüngliche Tweet anzeigen.

Das Bild auf dem Bildschirm ist nur Text, da es schwierig ist, ein Modell zu erstellen. comment box : @reply michael Cum aspermatur ..

Bild des Feeds anzeigen @reply michael Cum aspermatur ..

Zeigen Sie die Eingabefehlerprüfung an, um Funktionen detailliert zu entwerfen

Wenn die Benutzer-ID nicht gefunden wird, zeigt das benutzerfreundliche Design während der Eingabe einen Fehler an. Ich werde den Fehler anzeigen, da er beim Erstellen überprüft werden sollte.

Was tun, wenn user_id nach dem Posten gelöscht wird? Soll ich diesen Mikropost löschen? Ich denke, dass es besser ist, nur den Mikropost zu belassen, der der Person beantwortet wurde, die nicht mehr da ist, und ich denke, dass der Mikropost nicht gelöscht wird.

Benötigte Zeit

3,0 Stunden von 9/27 bis 10/1.

Recommended Posts

Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 1) erstellt.
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 5) erstellt:
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 2) erstellt: Modell ändern
Ich habe eine Antwortfunktion für die Erweiterung Rails Tutorial (Teil 4) erstellt: Eine Funktion, die den Benutzer einzigartig macht
Ich habe versucht, eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 3) zu erstellen: Ein Missverständnis der Spezifikationen wurde behoben
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
Ich habe versucht, eine Nachrichtenfunktion für die Erweiterung Rails Tutorial (Teil 2) zu erstellen: Erstellen Sie einen Bildschirm zum Anzeigen
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Ich habe ein Check-Tool für das Release-Modul erstellt
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 1
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 2
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 0
Ich habe eine einfache Empfehlungsfunktion erstellt.
Ich habe ein Plug-In für IntelliJ IDEA erstellt
Ich habe ein Diff-Tool für Java-Dateien erstellt
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
Ich habe einen LINE Bot mit Rails + Heroku gemacht
Ich habe mit Ruby On Rails ein Portfolio erstellt
Ich habe ein Docker-Image für die japanische Version von SDAPS erstellt
Ich habe die Ausführung des Rails-Tutorials geändert: Hinweise zum Rails-Tutorial - Kapitel 9
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
Ein Hinweis zum Initialisieren von Feldern im Java-Lernprogramm
Was soll ich für das Test-Framework verwenden [Rails]
Ich möchte eine Funktion in der Rails Console definieren
Ich habe eine Bibliothek zum Anzeigen von Tutorials auf Android erstellt.
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 1 (API Edition)
Ich möchte der Kommentarfunktion eine Löschfunktion hinzufügen
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 2 (Client Edition)
Ich habe versucht, eine japanische Version der Automatik-Mail von Rails / devise zu erstellen
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
[Rails] Ich habe zum ersten Mal versucht, die button_to-Methode zu verwenden
Ich möchte eine Produktinformationsbearbeitungsfunktion ~ part1 ~ implementieren
Ein Hinweis zum Seed-Feature von Ruby on Rails
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Erstmaliges Modellieren von Digimon mit DDD Teil 1
Ich habe eine Chat-App erstellt.
Schienen ~ Die Nachrichtenfunktion verstehen ~
[Rails] Implementierung der Tutorial-Funktion
Als ich mit MPAndroidChart ein Balkendiagramm erstellt habe, war die Beschriftung der x-Achse aus irgendeinem Grund falsch ausgerichtet
Ein halbes Jahr Selbststudium unerfahren gemacht SPA mit Rails + Nuxt.js, also schauen Sie bitte
[Rails] Ich habe eine einfache Kalender-Mini-App mit benutzerdefinierten Spezifikationen erstellt.
Implementieren Sie eine verfeinerte Suchfunktion für mehrere Modelle ohne Rails5-Juwel.
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich habe versucht, die Bildvorschau mit Rails / jQuery zu implementieren
Ich habe kürzlich eine JS-App in der gemunkelten Dart-Sprache erstellt
Ich habe ein Juwel gemacht, um den Text des Org-Modus in Qiita zu posten
Erstellt eine Methode zum Anfordern von Premium Friday (Java 8-Version)