[RUBY] [Rails] J'ai créé une fonction de brouillon en utilisant enum

introduction

Quand j'ai pensé à créer une fonction de brouillon, il n'y avait pas beaucoup d'articles, j'ai donc décidé de garder une trace.

Environnement de développement

ubuntu(WSL)
Ruby 2,5.1
Rails 6.0.2

Préparation préalable

Les fonctions suivantes sont supposées avoir été créées.

models/post.rb


  belongs_to :user

models/user.rb


  has_many :microposts, dependent: :destroy

Ajouter une colonne à la table Post

Tout d'abord, ajoutez une colonne d'état au modèle Post pour en faire un type booléen. Il est possible d'utiliser des entiers au lieu de booléens. Entrez la commande suivante.

bin/rails g migration AddStatusToPost status:boolean

Modifiez le fichier de migration.

migrationfile.rb


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

Après modification, migrez.

Ajoutez enum au modèle Post.

models/post.rb


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

Spécifiez le brouillon de la colonne d'état comme faux et la colonne publiée de l'état comme vrai.

Obtenez des informations pour chaque utilisateur

Obtenez l'identifiant de l'utilisateur avec @ user.

users_controller.rb


  #Pour brouillon
  def confirm
    @user = User.find(params[:user_id])
    @microposts = @user.microposts.draft.page(params[:page])
  end

  #Pour publication
  def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.published.page(params[:page])
  end

Ajouter un routage

Si vous ajoutez collection, l'identifiant ne sera pas ajouté à l'URL.

routes.rb


resources :users do
  get 'confirm'
end

Paramètres d'affichage

Je n'ai extrait que les parties pertinentes.

view/users/show.html.slim


//Écran des détails de l'utilisateur
= link_to "Liste des messages", @user
= link_to  "préféré", user_likes_path(current_user)
= link_to "Projet de liste", user_confirm_path(current_user)

//Afficher mon message
- if @microposts.present?
  = render "microposts/list", microposts: @microposts
- else
h4 Aucun message

Veuillez rédiger le projet de liste selon vos préférences.

view/users/confirm.html.slim


Liste brouillon h4

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

Le contenu de ʻicroposts / list` est le même que ci-dessus.

À la fin

Si vous faites une erreur, veuillez faire une demande de modification ou un commentaire.

Les références

Recommended Posts

[Rails] J'ai créé une fonction de brouillon en utilisant enum
J'ai fait une simple fonction de recommandation.
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 5):
J'ai créé un robot LINE avec Rails + heroku
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 2): Changer de modèle
J'ai fait un portfolio avec Ruby On Rails
Je souhaite définir une fonction dans la console Rails
Fonction de recherche à l'aide de [rails] ransack
J'ai créé une application de chat.
J'ai essayé de faire une version japonaise de la transmission automatique du courrier de Rails / devise
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
J'ai créé un système d'exemple MVC simple à l'aide de Spring Boot
J'ai créé un Dockerfile pour démarrer Glassfish 5 en utilisant Oracle Java
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 4): une fonction qui rend l'utilisateur unique
Ajoutez une fonction de recherche dans Rails.
[Rails] Fonction de gestion des balises (en utilisant des actes comme des balises)
J'ai créé une application shopify @java
J'ai créé une interface graphique avec Swing
Créer une fonction de filtrage en utilisant actes-as-taggable-on
J'ai créé une application correspondante (application Android)
J'ai créé un outil de génération package.xml.
[Android] J'ai créé une application de podomètre.
J'ai créé une interface de ligne de commande avec WinMerge Plugin en utilisant JD-Core
[Rails] J'ai créé une mini-application de calendrier simple avec des spécifications personnalisées.
Je souhaite ajouter une fonction de navigation avec ruby on rails
[Procédure d'implémentation] Créer une fonction d'authentification utilisateur à l'aide de sorcellerie dans Rails
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
[Ruby] J'ai créé un simple client Ping
[Rails] Ce que j'ai appris d'une petite pierre d'achoppement lors de l'utilisation de l'ascendance
[Retrait des rails] Créez une fonction de retrait simple avec des rails
[Rails] Je vais expliquer la procédure d'implémentation de la fonction follow en utilisant form_with.
J'ai fait une mort risquée avec Ruby
Créez quand même une fonction de connexion avec Rails
J'ai créé un plug-in pour IntelliJ IDEA
J'ai créé une application Janken avec kotlin
J'ai créé une application de calculatrice sur Android
J'ai créé un nouvel outil de déploiement Java
J'ai créé une application Janken avec Android
Créez une fonction de connexion à l'aide de l'option Swift
J'ai fait un exemple de la façon d'écrire un délégué dans Swift UI 2.0 à l'aide de MapKit
Déléguez le motif entre les vues. J'ai également fait une transition de page d'exemple en utilisant NavigationLink.
J'ai créé un outil Diff pour les fichiers Java
[Rails] Implémentation de la fonction de recherche en utilisant le ransack de gem
J'ai créé un programme de jugement des nombres premiers en Java
Créer une fonction d'authentification dans l'application Rails à l'aide de devise