[RUBY] [Rails] "Pry-Rails", die beim Speichern mit der create-Methode verwendet werden können

Hintergrund

Ich war süchtig danach, das Modell beim Erstellen des Portfolios zu speichern. Ich habe es mir notiert, weil es mit einem Edelstein namens "Pry-Rails" gelöst wurde.

Regler

Ich habe den folgenden Code und die folgende Methode erstellt.

records_controller.rb


class User::RecordsController < User::Base

##Unterlassung...

  def create
    @record = current_app_user.records.build(record_params)
    if @record.save
      flash[:success] = 'Erfolgreich eingegeben'
      redirect_to user_root_url
    else
      flash.now[:danger] = 'Nicht erfolgreich eingegeben'
      render :new
    end
  end

##Unterlassung...

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

Modell-

Modellname: Datensatz Die Spalten sind wie folgt.

["id", :integer]
["material", :string] #Ich möchte Unterrichtsmaterialien bereitstellen
["study_date", :date] #Ich möchte ein Date setzen
["study_hour", :integer] #Ich möchte Zeit zum Lernen einplanen
["study_minute", :integer] #Ich möchte die Lernzeit (Minute) eingeben.
["memo", :string] #Ich möchte ein Memo einfügen
["app_user_id", :integer]
["created_at", :datetime]
["updated_at", :datetime]

Lösungsverfahren

Dem Gemfile wurde Folgendes hinzugefügt

Gemfile.


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

Bundle-Installation im Terminal

$bundle install

Zur Erstellungsmethode hinzugefügt

records_controller.rb


class User::RecordsController < User::Base

##Unterlassung...

  def create
    binding.pry #Fügen Sie dieses hinzu! !!
    @record = current_app_user.records.build(record_params)
    if @record.save

##Unterlassung...
  

Versuchen Sie dann zu speichern. Dann geht die GUI in einen Standby-Zustand Befehlszeilenbedienung ist am Terminal möglich. Der folgende Bildschirm wird angezeigt.

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] = 'Erfolgreich eingegeben'
    24:     redirect_to user_root
    25:   else
    26:     flash.now[:danger] = 'Nicht erfolgreich eingegeben'
    27:     render :new
    28:   end
    29: end
[1] pry(#<User::RecordsController>)>

Geben Sie nun params ein. Dann

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

Wenn Sie sich das ansehen, können Sie sehen, welchen Wert Sie in welche Spalte setzen wollten. Ich habe versucht, ein Memo in die Spalte "Memo" einzufügen, und ich habe versucht, "japanische Geschichte" in die Spalte "Material" einzufügen.

Trotzdem gibt es in der Memospalte japanische Geschichte, und in der Materialspalte gibt es überhaupt keine Eingabe. Dort bemerke ich, dass es "lustig" ist.

Weil das Material eine Nicht-Null-Einschränkung hatte "Material ist nicht gut mit Null, aber was bedeutet es, zu versuchen, es als Null zu speichern?" Das Speichern hat wahrscheinlich nicht funktioniert.

・ Die Methode sollte in Ordnung sein

Von diesem Punkt an konnte ich herausfinden, dass die Art und Weise, das Ansichtsformular zu schreiben, seltsam ist. Sicher genug, der Code dort war seltsam, also habe ich ihn repariert und gelöst.

Fazit

pry-rail war eine sehr nützliche Bibliothek, um die Fehlerursache zu identifizieren.

Recommended Posts

[Rails] "Pry-Rails", die beim Speichern mit der create-Methode verwendet werden können
Erstellen Sie ein Seitensteuerelement, das mit RecyclerView verwendet werden kann
Organisieren Sie Methoden, die mit StringUtils verwendet werden können
Ruby-Array-Methoden, die mit Rails verwendet werden können (außer jedem)
Über die Sache, dass hidden_field wahnsinnig benutzt werden kann
[ERROR-Meldungsanzeige] Einfache Version, die jederzeit mit der Schienen-Teilvorlage verwendet werden kann
Firebase-Realtime-Datenbank für Android, die mit Kopie verwendet werden kann
Vier Reihen mit Schwerkraft, die auf der Konsole gespielt werden können
Ruby on Rails 5 - Kurzanleitung zum Lernen, die im Feld Zusammenfassung verwendet werden kann
Syntax- und Ausnahmebedingungen, die beim Vergleich mit null in Java verwendet werden können
Lernen Sie Ruby mit AtCoder Anfänger Auswahl [Einige Summen] Erhöhen Sie die Methoden, die verwendet werden können
SwiftUI-Ansicht, die in Kombination mit anderen Frameworks verwendet werden kann
Stellen Sie die Zugriffslast ein, die mit JMeter grafisch geändert werden kann (Teil 2).
Einfache Implementierung eines Spielautomaten, die mit Kopie verwendet werden kann
Stellen Sie die Zugriffslast ein, die mit JMeter grafisch geändert werden kann (Teil 1).
Einstellungen, die beim Betrieb einer Produktionsumgebung mit Rails vorgenommen werden sollten
Tools zur Leistungsanalyse und Fehlerdiagnose, die mit OpenJDK verwendet werden können
[Ruby On Rails] Notfallmaßnahmen, wenn redirect_to action :: show nicht zum Erstellen von Aktionen und zum Zerstören von Aktionen verwendet werden kann (kann)
[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
[Rails] So bedienen Sie die in der Hauptanwendung verwendete Hilfsmethode mit Administrate
Die Geschichte, dass der Port im Spring-Boot-Beispielprogramm unbrauchbar wird
[Rails] Lösung, wenn bei Verwendung von Capybara mit Rspec der Fehler "undefined method` visit '" angezeigt wird
Bereich, in dem Variablen mit Ruby verwendet werden können [Scope]
Scala String kann nicht nur für java.lang.String-Methoden verwendet werden
Süchtig nach dem Webpacker, der standardmäßig mit Rails 6 geliefert wird
Praktische Tastenkombinationen für Eclipse
[Spring Data JPA] Kann die And-Bedingung in der automatisch implementierten Löschmethode verwendet werden?
[Java 8] Sortiermethode in alphabetischer Reihenfolge und Reihenfolge der Zeichenkettenlänge, die für Codierungstests verwendet werden kann
[RSpec] Als ich die Ansichtsdatei getestet habe, die die Hilfsmethode verwendet hat, habe ich ActionView :: Template :: Error: erhalten. ..
[Schienen] Was tun, wenn die Ansicht zusammenbricht, wenn eine Nachricht mit der Fehlermethode angezeigt wird?
Warum kann ich den mit gem installierten Befehl Rails verwenden? ??
Nur der Stream der obersten Ebene kann mit Java Stream parallelisiert werden.
Erstellen Sie eine JAR-Datei, die auf Gradle ausgeführt werden kann
Der Fall, dass @Autowired in JUnit5 nicht verwendet werden konnte
[Frage] Kann nullif in der Zählfunktion in JPQL verwendet werden?
Erstellen Sie eine Methode, mit der Zeichen von jedem Ort abgerufen werden können
[Rails] Probleme, die mit devise nicht registriert / angemeldet werden können
Erstellen wir einen Docker-Container, der SSH auf die Mindestkonfiguration von CentOS 8 ausführen kann
Statisches Analysetool, das mit GitHub verwendet werden kann [Java-Version]
Erstellen Sie eine Umgebung, in der pip3 mit CentOS7 + Python3 verwendet werden kann
Zusammenfassung von ORM "uroboroSQL", das in Enterprise Java verwendet werden kann
Kraftfertigkeiten, die jederzeit schnell eingesetzt werden können - Reflexion
Informationen zu Bereich und Umfang, in denen Day16-Variablen verwendet werden können
Zusammenfassung der JDKs, die mit Homebrew installiert werden können (Stand November 2019)
Mit Pg_resetwal kann der PostgreSQL Docker-Container gestartet werden, wenn WAL fehlerhaft ist und nicht gestartet werden kann.
Ich habe versucht, die Funktion zum Hochladen mehrerer Bilder in Rails zu implementieren, damit mehrere Bilder für den Beitrag verschoben werden können
[OpenJDK11 & JavaFX13] Erstellen Sie eine JavaFX-App mit IntelliJ + gradle und erstellen Sie ein Paket, das zusammen mit einer leichten JRE verteilt werden kann.
[Spring Boot] Liste der Validierungsregeln, die in der Eigenschaftendatei für Fehlermeldungen verwendet werden können
Ich habe die gleiche Beschreibung wie eine Methode unter privat im Rails-Controller getrennt und implementiert, damit sie mit before_action aufgerufen werden kann