[RUBY] [Rails / Active Record] Über den Unterschied zwischen create und create!

Überblick

Informationen zur ActiveRecord-Methode create, mit der ein neuer Datensatz erstellt wird. Ich habe den Unterschied zwischen "create" und "create" kennengelernt, also werde ich es erklären.


Fazit: Ob eine Ausnahme ausgelöst werden soll

Was ist der Unterschied mit und ohne ! ? Fazit "Ob eine Ausnahme ausgelöst werden soll".

Es ist jedoch schwierig, die "Ausnahme" zu verstehen. Um den tatsächlich auftretenden Unterschied zu erklären, ändert sich mit oder ohne ! `` Wird dieser rote Bildschirm angezeigt? " Wenn der Prozess fehlschlägt.


Im Fall von create!

Wenn Sie create! Festlegen, wird eine ActiveRecord :: RecordInvalid-Ausnahme wie unten gezeigt auftreten und der vertraute Bildschirm wird angezeigt.

domo

Folgen wir der eigentlichen Operation.

Der diesmal verwendete Code lautet wie folgt (* Die Beschreibung der Erstellungsaktion wird nicht empfohlen).

① Routing

app/config/routes.rb


Rails.application.routes.draw do
  root to: 'comments#index'
  resources :comments, only: [:create]
end
  1. Senden Sie einen leeren Wert in Form von index.html.erb
  2. Kommentare anfordern # erstellen

② Kommentare ausführen # Aktion erstellen

app/controllers/comments_controller.rb


class CommentsController < ApplicationController

  def index
    @comments = Comment.all.order("created_at DESC")
    @comment = Comment.new
  end

  def create
    #Das Schreiben dieser Erstellungsaktion ist veraltet.
    @comment = Comment.create!(comment_params)
    redirect_to root_path
  end

  private

  def comment_params
    params.require(:comment).permit(:text)
  end
end
  1. Laden Sie die ActiveRecord-Methode create (new + save)
  2. Parameter mit comment_params abrufen (Textspaltenwert ist leer)
  3. Validierungsprüfung im Speicherteil von create

③ Validierungsprüfung mit Kommentarmodell

app/models/comment.rb


class Comment < ApplicationRecord
  validates :text, presence: true
end
  1. Es bleibt im Validierungssatz in der Textspalte hängen
  2. Eine Ausnahme tritt auf, weil sie nicht gespeichert werden kann
  3. Dieser rote Bildschirm wird angezeigt

✔ GIF folgt dem obigen Ablauf

Der Fehlerbildschirm wurde fest angezeigt.

demo


Ohne !

Senden Sie das Formular für die unten stehende Erstellungsaktion.

app/controllers/comments_controller.rb


def create
  @comment = Comment.create(comment_params) # !Ausschließen
  redirect_to root_path
end

✔ Betrieb in diesem Fall (GIF)

Der Fehlerbildschirm wird aufgrund der Ausnahmebehandlung nicht angezeigt, und Sie werden umgeleitet.

demo


Zusammenfassung


Referenz

Recommended Posts

[Rails / Active Record] Über den Unterschied zwischen create und create!
[Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht
Über den Unterschied zwischen irb und pry
[Schienen] Unterschied zwischen Erstellungsmethode und neuer + Speichermethode
[Rails] Ich habe den Unterschied zwischen neuer Methode, Speichermethode, Erstellungsmethode und Erstellungsmethode untersucht.
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
Unterschiede zwischen Klassen und Instanzen in Ruby
[Rails] Was ist der Unterschied zwischen Redirect und Rendering?
[Rails] Unterschied zwischen find und find_by
[Rails] Unterschied zwischen redirect_to und Rendern
[Rails] Was ist der Unterschied zwischen Bundle-Installation und Bundle-Update?
[Rails] Unterschied zwischen redirect_to und render [Anfänger]
Unterschiede zwischen get und gets.chomp (außer Zeilenumbrüchen)
[Java] Verstehe den Unterschied zwischen List und Set
[Rails] Unterschied im Verhalten zwischen Delegat und has_many-through bei Eins-zu-Eins-zu-Viele
[iOS] Verstehe den Unterschied zwischen Frame und Grenzen
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Unterschied zwischen Mitglied und Sammlung von Schienen route.rb
Ein Memo über den Fluss von Rails und Vue
Unterschied zwischen vh und%
Unterschied zwischen i ++ und ++ i
Was ist der Unterschied zwischen Systemspezifikation und Funktionsspezifikation?
Unterschied zwischen neu und in Rais Action Controller erstellen
Informationen zur Beziehung zwischen HTTP-Methoden, Aktionen und CRUD
Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Was ist der Unterschied zwischen Überspringen und Ausstehend? [RSpec]
[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.
Unterschied zwischen Produkt und Variante
Unterschied zwischen redirect_to und render
[Java] Unterschied zwischen == und gleich
Unterschied zwischen redirect_to und render
Unterschied zwischen CUI und GUI
Unterschied zwischen Variablen und Instanzvariablen
Unterschied zwischen Mockito-Core und Mockito-All
Ungefähr der gleiche und der gleiche Wert
Unterschied zwischen Klasse und Instanz
Unterschied zwischen Bundle und Bundle-Installation
Unterschied zwischen ArrayList und LinkedList
Unterschied zwischen render und redirect_to
Unterschied zwischen List und ArrayList
Unterschied zwischen .bashrc und .bash_profile
Unterschied zwischen StringBuilder und StringBuffer
Unterschied zwischen render und redirect_to
[Java] Hinweis zum Unterschied zwischen Äquivalenzbeurteilung und Gleichheitsbeurteilung beim Vergleich von String-Klassen
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)