[RUBY] Über erfordern beim Einstellen starker Parameter

Betriebsumgebung Ruby 2.6.5 Rails 6.0.3.2

Es hat eine Weile gedauert, bis ich den Unterschied zwischen dem Zeitpunkt, zu dem ein starker Parameter erforderlich ist, und dem Zeitpunkt, zu dem er nicht erforderlich ist, verstanden habe. Deshalb habe ich ihn veröffentlicht.

Bei Bedarf ist erforderlich

ruby:new.html.erb


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

hoges_controller.rb


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

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

Im obigen Fall ist require (: hoge) für den strong-Parameter erforderlich. Dies liegt daran, dass Fuga in der Liste der Parameter enthalten ist, die gesendet werden, wenn Sie auf "Posten" klicken. Wenn Sie die Parameter in der Aktion "create" mit "binding.pry" überprüfen, sieht dies tatsächlich wie folgt aus. Angenommen, Sie haben "Beispiel" in Fuga eingegeben.

{"authenticity_token" => "+ wXNK4Z3C0wrq4AfslPS5zl / 2LSUE6BvV + 23hQpkHryrsVzPb0siDIkarIsNYLK2R502fuXlqQ =" "," action "=>" create "}

Bei Bedarf ist nicht erforderlich

ruby:new.html.erb


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

hoges_controller.rb


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

private
def hoge_params
  params.permit(:fuga)
end

Im obigen Fall muss der starke Parameter nicht erforderlich sein. Dies liegt daran, dass hoge in den Parametern, die beim Klicken auf Post gesendet werden, nicht vorhanden ist und fuga direkt enthalten ist. Wenn Sie die Parameter in der Aktion "create" mit "binding.pry" überprüfen, sieht dies tatsächlich wie folgt aus. Angenommen, Sie haben "Beispiel" in Fuga eingegeben.

{"authenticity_token" => "+ wXNK4Z3C0wrq4AfslPS5zl / 2LSUE6BvV + 23hQpkHryrsVzPb0siDIkarIsNYLK2R502fuXlqQ ==", "fuga" => "Example", "commit" = "" "erstellen"}

Wie oben erwähnt, können Sie sehen, dass Hoge nicht anders als zuvor existiert.

Zusammenfassung

Mit anderen Worten, es stellt sich heraus, dass der starke Parameter require verwendet wird, um das, was Sie in params (in diesem Fall fuga) eingegeben haben, aus einem Element (in diesem Fall hoge) herauszuholen.

Grob gesagt ist require erforderlich, wenn model in form_with angegeben ist. Wenn Sie es nicht angeben, können Sie sagen, dass require nicht erforderlich ist.

Recommended Posts

Über erfordern beim Einstellen starker Parameter
Schienen Starke Parameter
[Starke Parameter]
[Ruby] Starke Parameter [erforderlich] [zulassen] [zusammenführen] Verwendung der Rolle
Festlegen der Wartung bei der Installation von Eclipse
[Schienen] Was sind starke Parameter?
Aktivieren Sie starke Parameter in devise