[RUBY] [Rails] "Pry-rails" qui peuvent être utilisés lors de l'enregistrement avec la méthode create

Contexte

J'étais accro à la sauvegarde du modèle lors de la création du portfolio. J'en ai pris note car il a été résolu en utilisant une gemme appelée "pry-rails".

manette

J'ai créé le code et la méthode suivants.

records_controller.rb


class User::RecordsController < User::Base

##Omission...

  def create
    @record = current_app_user.records.build(record_params)
    if @record.save
      flash[:success] = 'Entré avec succès'
      redirect_to user_root_url
    else
      flash.now[:danger] = 'N'a pas réussi à entrer'
      render :new
    end
  end

##Omission...

  private def record_params
    params.require(:record).permit(
      :material,
      :study_date,
      :study_hour,
      :study_minute,
      :memo,
    )
  end
end

modèle

Nom du modèle: record Les colonnes sont les suivantes.

["id", :integer]
["material", :string] #Je veux mettre du matériel pédagogique
["study_date", :date] #Je veux mettre une date
["study_hour", :integer] #Je veux mettre du temps d'étude
["study_minute", :integer] #Je veux mettre du temps d'étude (minute)
["memo", :string] #Je veux mettre un mémo
["app_user_id", :integer]
["created_at", :datetime]
["updated_at", :datetime]

Procédure de solution

Ajout de ce qui suit au Gemfile

Gemfile.


group :development, :test do
  gem 'pry-rails'
end

Installation groupée dans le terminal

$bundle install

Ajouté à Create Method

records_controller.rb


class User::RecordsController < User::Base

##Omission...

  def create
    binding.pry #Ajoutez celui-ci! !!
    @record = current_app_user.records.build(record_params)
    if @record.save

##Omission...
  

Ensuite, essayez de sauvegarder. Ensuite, l'interface graphique passe en état de veille Le fonctionnement en ligne de commande est possible sur le terminal. L'écran ci-dessous s'affiche.

From: /apps/study-meter/app/controllers/user/records_controller.rb:20 User::RecordsController#create:

    19: def create
 => 20:   binding.pry
    21:   @record = Record.new(record_params)
    22:   if @record.save
    23:     flash[:success] = 'Entré avec succès'
    24:     redirect_to user_root
    25:   else
    26:     flash.now[:danger] = 'N'a pas réussi à entrer'
    27:     render :new
    28:   end
    29: end
[1] pry(#<User::RecordsController>)>

Entrez maintenant les paramètres. Puis

[1] pry(#<User::RecordsController>)> params
=> <ActionController::Parameters {"authenticity_token"=>"y5Y+hutJRPbyX9VM0lpiIax4hfeF5TXoykVL35fLQV727TmH/+/f/qncyRtDaANL1h5kqIOErcrGRhfCYuYCKg==", "record"=>{"study_date"=>"2020-07-14", "memo"=>"Histoire japonaise", "study_hour"=>"0", "study_minute"=>"3"}, "commit"=>"Publier", "host"=>"study-meter.com", "controller"=>"user/records", "action"=>"create"} permitted: false>

Si vous regardez cela, vous pouvez voir quelle valeur vous essayiez de mettre dans quelle colonne. J'essayais de mettre un mémo dans la colonne "mémo", et j'essayais de mettre "l'histoire du Japon" dans la colonne matérielle.

Même ainsi, il y a une histoire japonaise dans la colonne mémo, et il n'y a pas d'entrée dans la colonne matériel en premier lieu. Là, je remarque que c'est "drôle".

Parce que le matériau avait une contrainte non nulle "Le matériel n'est pas bon avec nul, mais qu'est-ce que cela signifie d'essayer de le sauver comme nul?" La sauvegarde n'a probablement pas fonctionné.

・ La méthode devrait être correcte -Colonne non intentionnelle Vous essayez d'entrer une colonne non souhaitée

À partir de là, j'ai pu découvrir que la manière d'écrire le formulaire de vue est étrange. Effectivement, le code là-bas était étrange, alors je l'ai corrigé et résolu.

Conclusion

pry-rails était une bibliothèque très utile pour identifier la cause d'une erreur.

Recommended Posts

[Rails] "Pry-rails" qui peuvent être utilisés lors de l'enregistrement avec la méthode create
Créer un contrôle de page qui peut être utilisé avec RecyclerView
Organiser les méthodes qui peuvent être utilisées avec StringUtils
Méthodes de tableau Ruby pouvant être utilisées avec Rails (autres que chacun)
À propos du problème que hidden_field peut être utilisé de manière insensée
[Affichage message ERREUR] Version simple utilisable à tout moment avec le gabarit partiel des rails
Base de données Firebase-Realtime sur Android pouvant être utilisée avec copie
Quatre rangées avec gravité pouvant être jouées sur la console
Ruby on Rails 5 guide pratique d'apprentissage rapide qui peut être utilisé sur le terrain Résumé
Syntaxe et conditions d'occurrence d'exception pouvant être utilisées lors de la comparaison avec null en Java
Apprendre Ruby avec la sélection des débutants AtCoder [Quelques sommes] Augmentez les méthodes qui peuvent être utilisées
SwiftUI View qui peut être utilisé en combinaison avec d'autres frameworks
Définissez la charge d'accès qui peut être modifiée graphiquement avec JMeter (partie 2)
Implémentation de machine à sous simple qui peut être utilisée avec copie
Définissez la charge d'accès qui peut être modifiée graphiquement avec JMeter (Partie 1)
Paramètres à définir lors de l'exploitation d'un environnement de production avec Rails
Outils d'analyse des performances et de diagnostic des pannes utilisables avec OpenJDK
[Ruby On Rails] Mesures d'urgence lorsque redirect_to action :: show ne peut pas être (ne peut pas être utilisé) dans l'action de création et de destruction
[Android] Je souhaite créer un ViewPager pouvant être utilisé pour les didacticiels
[Rails] Comment utiliser la méthode d'assistance utilisée dans l'application principale avec Administrer
L'histoire du port devenant inutilisable dans l'exemple de programme Spring Boot
[Rails] Solution lorsque l'erreur "visite de la méthode non définie" "apparaît lors de l'utilisation de Capybara avec Rspec
Plage où les variables peuvent être utilisées avec ruby [Scope]
Scala String peut être utilisé pour plus que de simples méthodes java.lang.String
Accro au Webpacker fourni en standard avec Rails 6
Touches de raccourci pratiques pour Eclipse
[Spring Data JPA] La condition And peut-elle être utilisée dans la méthode de suppression implémentée automatiquement?
[Java 8] Méthode de tri par ordre alphabétique et par ordre de longueur de chaîne de caractères pouvant être utilisée dans les tests de codage
[RSpec] Lorsque j'ai testé le fichier de vue qui utilisait la méthode d'assistance, j'ai obtenu ActionView :: Template :: Error:. ..
[Rails] Que faire lorsque la vue se réduit lorsqu'un message est affiché avec la méthode des erreurs
Pourquoi puis-je utiliser la commande rails installée avec gem? ??
Seul le flux de niveau supérieur peut être parallélisé avec Java Stream.
Créez un fichier jar qui peut être exécuté sur Gradle
Le cas où @Autowired n'a pas pu être utilisé dans JUnit5
[Question] Nullif peut-il être utilisé dans la fonction de comptage de JPQL?
Créez une méthode qui peut récupérer des caractères à partir de n'importe quel emplacement
[rails] Problèmes qui ne peuvent pas être enregistrés / connectés avec l'appareil
Créons un conteneur Docker qui peut SSH à la configuration minimale de CentOS 8
Outil d'analyse statique pouvant être utilisé avec GitHub [version Java]
Créer un environnement où pip3 peut être utilisé avec CentOS7 + Python3
Résumé de l'ORM "uroboroSQL" qui peut être utilisé dans le Java d'entreprise
J'ai posé une question qui peut être utilisée pour des entretiens techniques
Compétences de puissance qui peuvent être utilisées rapidement à tout moment - Réflexion
À propos de la plage et de la portée dans lesquelles les variables Day16 peuvent être utilisées
Résumé des JDK pouvant être installés avec Homebrew (à partir de novembre 2019)
Pg_resetwal peut être utilisé pour démarrer le conteneur Docker PostgreSQL lorsque WAL est cassé et ne peut pas être démarré.
J'ai essayé d'implémenter la fonction de téléchargement d'images multiples dans Rails afin que plusieurs images puissent être glissées pour le message
[OpenJDK11 & JavaFX13] Créez une application javaFX avec IntelliJ + gradle et créez un package qui peut être distribué avec un JRE léger.
[Spring Boot] Liste des règles de validation qui peuvent être utilisées dans le fichier de propriétés pour les messages d'erreur
J'ai séparé la même description qu'une méthode sous private dans le contrôleur Rails et je l'ai implémentée pour qu'elle puisse être appelée avec before_action