À propos de la méthode ActiveRecord create '' qui crée un nouvel enregistrement. J'ai appris la différence entre
créer '' et `` créer! '', Donc je vais l'expliquer.
Quelle est la différence avec et sans ! ''?
Conclusion "S'il faut soulever une exception" ``.
Cependant, il est difficile de comprendre l '«exception».
Pour expliquer la différence qui se produit réellement, ce qui change avec ou sans ! '' Est
"Cet écran rouge apparaît-il?" `` Lorsque le processus échoue.
Si vous définissez `` create! '', Si vous êtes pris dans la validation, une exception ActiveRecord :: RecordInvalid se produira comme indiqué ci-dessous, et l'écran familier sera affiché.
Suivons l'opération réelle.
Le code utilisé cette fois est le suivant (* La description de l'action de création n'est pas recommandée).
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
#L'écriture de cette action de création est déconseillée.
@comment = Comment.create!(comment_params)
redirect_to root_path
end
private
def comment_params
params.require(:comment).permit(:text)
end
end
create
app/models/comment.rb
class Comment < ApplicationRecord
validates :text, presence: true
end
L'écran d'erreur était affiché fermement.
Soumettez le formulaire pour l'action de création ci-dessous.
app/controllers/comments_controller.rb
def create
@comment = Comment.create(comment_params) # !Exclure
redirect_to root_path
end
L'écran d'erreur ne s'affiche pas en raison de la gestion des exceptions et vous êtes redirigé.
!
De `` create! '' Est une description qui soulève une exceptionRecommended Posts