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.
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.
create!Wenn Sie create! Festlegen, wird eine ActiveRecord :: RecordInvalid-Ausnahme wie unten gezeigt auftreten und der vertraute Bildschirm wird angezeigt.
Folgen wir der eigentlichen Operation.
Der diesmal verwendete Code lautet wie folgt (* Die Beschreibung der Erstellungsaktion wird nicht empfohlen).
app/config/routes.rb
Rails.application.routes.draw do
root to: 'comments#index'
resources :comments, only: [:create]
end
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
create (new + save) createapp/models/comment.rb
class Comment < ApplicationRecord
validates :text, presence: true
end
Der Fehlerbildschirm wurde fest angezeigt.
! 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
Der Fehlerbildschirm wird aufgrund der Ausnahmebehandlung nicht angezeigt, und Sie werden umgeleitet.
! Von create! Ist eine Beschreibung, die eine Ausnahme auslöst! Gibt, wird die nächste Umleitung so ausgeführt, wie sie ist, ohne gespeichert zu werden.Recommended Posts