[RUBY] À propos d'exiger lors de la définition de paramètres forts

Environnement d'exploitation Ruby 2.6.5 Rails 6.0.3.2

Il m'a fallu un certain temps pour comprendre la différence entre quand un paramètre fort est requis et quand il n'est pas requis, alors je l'ai posté.

Si besoin est requis

ruby:new.html.erb


<%= form_with model:@hoge, local: true do |f| %>
  <%= f.text_area :fuga %>
<%= f.submit "Publier" %>

hoges_controller.rb


def create
  @hoge = Hoge.create(hoge_params)
end

private
def hoge_params
  params.require(:hoge).permit(:fuga)
end

Dans le cas ci-dessus, require (: hoge) est requis pour le paramètre strong. C'est parce que fuga est inclus dans la multitude de paramètres qui sont envoyés lorsque vous cliquez sur Publier. En fait, si vous vérifiez les paramètres dans l'action de création à l'aide de binding.pry, ce sera comme suit. Supposons que vous ayez entré "exemple" dans fuga.

{"authenticity_token" => "+ wXNK4Z3C0wrq4AfslPS5zl / 2LSUE6BvV + 23hQpkHryrsVzPb0siDIkarIsNYLK2R502fuXlqQ ==", "hoge"> = {"commit"> "Exemple = {" commit ">"} "," action "=>" créer "}

Si le besoin n'est pas requis

ruby:new.html.erb


<%= form_with url:hoge_path, local: true do |f| %>
  <%= f.text_area :fuga %>
<%= f.submit "Publier" %>

hoges_controller.rb


def create
  @hoge = Hoge.create(hoge_params)
end

private
def hoge_params
  params.permit(:fuga)
end

Dans le cas ci-dessus, le paramètre fort n'a pas besoin d'être requis. C'est parce que hoge n'existe pas dans les paramètres envoyés lorsque vous cliquez sur Publier, mais fuga est inclus directement. En fait, si vous vérifiez les paramètres dans l'action de création à l'aide de binding.pry, ce sera comme suit. Supposons que vous ayez entré "exemple" dans fuga.

{"authenticity_token" => "+ wXNK4Z3C0wrq4AfslPS5zl / 2LSUE6BvV + 23hQpkHryrsVzPb0siDIkarIsNYLK2R502fuXlqQ ==", "fuga" => "Exemple", "Valider" => contrôleur "créer"}

Comme mentionné ci-dessus, vous pouvez voir que hoge n'existe pas contrairement à avant.

Résumé

En d'autres termes, il s'avère que le paramètre strong require est utilisé pour extraire ce que vous avez entré dans les paramètres (fuga dans ce cas) d'un élément (hoge dans ce cas).

En gros, require est requis lorsque le modèle est spécifié dans form_with. Si vous ne le spécifiez pas, vous pouvez dire que require n'est pas nécessaire.

Recommended Posts

À propos d'exiger lors de la définition de paramètres forts
rails Paramètres forts
[Paramètres forts]
[Ruby] Paramètres forts [nécessitent] [permis] [fusion] Comment utiliser le rôle
Configuration de la maintenance lors de l'installation d'Eclipse
[rails] Que sont les paramètres forts?
Activer des paramètres forts dans la conception