[RUBY] [Rails] Ich habe eine Entwurfsfunktion mit enum erstellt

Einführung

Als ich darüber nachdachte, einen Entwurf zu erstellen, gab es nicht viele Artikel, deshalb beschloss ich, Aufzeichnungen zu führen.

Entwicklungsumgebung

ubuntu(WSL)
Ruby 2,5.1
Rails 6.0.2

Vorbereitungen

Es wird davon ausgegangen, dass die folgenden Funktionen erstellt wurden.

--Postfunktion / Details / Löschen / Bearbeiten (Post) --Erstellen / Details des Benutzers (Benutzer)

models/post.rb


  belongs_to :user

models/user.rb


  has_many :microposts, dependent: :destroy

Fügen Sie der Post-Tabelle eine Spalte hinzu

Fügen Sie dem Post-Modell zunächst eine Statusspalte hinzu, um es zu einem booleschen Typ zu machen. Es ist möglich, Interger anstelle von Boolean zu verwenden. Geben Sie den folgenden Befehl ein.

bin/rails g migration AddStatusToPost status:boolean

Bearbeiten Sie die Migrationsdatei.

migrationfile.rb


  def change
    add_column :microposts, :status, :boolean, default: true, null: false
  end

Migrieren Sie nach der Bearbeitung.

Fügen Sie dem Post-Modell eine Aufzählung hinzu.

models/post.rb


  enum status: { draft: false, published: true }

Geben Sie den Entwurf der Statusspalte als falsch und den veröffentlichten der Statusspalte als wahr an.

Informationen für jeden Benutzer abrufen

Holen Sie sich die ID des Benutzers mit @ user.

users_controller.rb


  #Für Entwurf
  def confirm
    @user = User.find(params[:user_id])
    @microposts = @user.microposts.draft.page(params[:page])
  end

  #Zur Veröffentlichung
  def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.published.page(params[:page])
  end

Routing hinzufügen

Wenn Sie "Sammlung" hinzufügen, wird die ID nicht zur URL hinzugefügt.

routes.rb


resources :users do
  get 'confirm'
end

Einstellungen anzeigen

Ich habe nur die relevanten Teile extrahiert.

view/users/show.html.slim


//Bildschirm mit Benutzerdetails
= link_to "Beitragsliste", @user
= link_to  "Favorit", user_likes_path(current_user)
= link_to "Entwurfsliste", user_confirm_path(current_user)

//Meinen Beitrag anzeigen
- if @microposts.present?
  = render "microposts/list", microposts: @microposts
- else
h4 Keine Beiträge

Bitte schreiben Sie den Listenentwurf nach Ihren Wünschen.

view/users/confirm.html.slim


h4 Entwurfsliste

table.table.table-hover
  thead.thead-default
    tr
      th = Micropost.human_attribute_name(:title)
      th = Micropost.human_attribute_name(:content)
      th = Micropost.human_attribute_name(:created_at)
      th
  tbody
    - @microposts.each do |micropost|
      tr
        td = link_to micropost.title, micropost
        td = link_to micropost.content, micropost
        td

Der Inhalt von "icroposts / list" ist der gleiche wie oben.

Am Ende

Wenn Sie einen Fehler machen, stellen Sie bitte eine Bearbeitungsanfrage oder einen Kommentar.

Verweise

Recommended Posts

[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Ich habe eine einfache Empfehlungsfunktion erstellt.
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 5) erstellt:
Ich habe einen LINE Bot mit Rails + Heroku gemacht
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 2) erstellt: Modell ändern
Ich habe mit Ruby On Rails ein Portfolio erstellt
Ich möchte eine Funktion in der Rails Console definieren
Suchfunktion mit [Rails] Ransack
Ich habe eine Chat-App erstellt.
Ich habe versucht, eine japanische Version der Automatik-Mail von Rails / devise zu erstellen
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
Ich habe mit Spring Boot ein einfaches MVC-Beispielsystem erstellt
Ich habe eine Docker-Datei erstellt, um Glassfish 5 mit Oracle Java zu starten
Ich habe eine Antwortfunktion für die Erweiterung Rails Tutorial (Teil 4) erstellt: Eine Funktion, die den Benutzer einzigartig macht
Fügen Sie eine Suchfunktion in Rails hinzu.
[Rails] Tag-Verwaltungsfunktion (unter Verwendung von Acts-as-Taggable-On)
Ich habe eine shopify App @java erstellt
Ich habe mit Swing eine GUI erstellt
Erstellen Sie eine Filterfunktion mit Acts-as-Taggable-On
Ich habe eine passende App erstellt (Android App)
Ich habe ein Tool zur Generierung von package.xml erstellt.
[Android] Ich habe eine Schrittzähler-App erstellt.
Ich habe mit JD-Core eine Befehlszeilenschnittstelle mit dem WinMerge Plugin erstellt
[Rails] Ich habe eine einfache Kalender-Mini-App mit benutzerdefinierten Spezifikationen erstellt.
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
[Implementierungsverfahren] Erstellen Sie eine Benutzerauthentifizierungsfunktion mithilfe von Hexerei in Rails
Ich habe versucht, eine einfache Anwendung mit Dockder + Rails Scaffold zu erstellen
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Ich habe versucht, ein Fenster mit Bootstrap 3 zu erstellen"
[Ruby] Ich habe einen einfachen Ping-Client erstellt
[Rails] Was ich aus einem kleinen Stolperstein bei der Verwendung von Vorfahren gelernt habe
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
[Rails] Ich werde die Prozedur zum Implementieren der Follow-Funktion mit form_with erklären.
Ich habe mit Ruby einen riskanten Würfel gemacht
Erstellen Sie trotzdem eine Anmeldefunktion mit Rails
Ich habe ein Plug-In für IntelliJ IDEA erstellt
Ich habe eine Janken App mit Kotlin gemacht
Ich habe eine Taschenrechner-App für Android erstellt
Ich habe ein neues Java-Bereitstellungstool erstellt
Ich habe eine Janken App mit Android gemacht
Erstellen Sie eine Anmeldefunktion mit Swift's Optional
Ich habe ein Beispiel erstellt, wie ein Delegat in Swift UI 2.0 mit MapKit geschrieben wird
Muster zwischen Ansichten delegieren. Ich habe auch einen Beispielseitenübergang mit NavigationLink durchgeführt.
Ich habe ein Diff-Tool für Java-Dateien erstellt
[Rails] Implementierung der Suchfunktion mit Gem's Ransack
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
Erstellen Sie die Authentifizierungsfunktion in der Rails-Anwendung mit devise