[Ruby] Starke Parameter [erforderlich] [zulassen] [zusammenführen] Verwendung der Rolle

Einführung

Dieser Artikel ist in Worten verfasst, die das Poster verstehen kann, um zu überprüfen, was er gelernt hat.

1. Rolle

Starke Parameter haben einen bestimmten Schlüssel und können so eingeschränkt werden, dass nur Parameter empfangen werden.

2. Grund zur Verwendung

Unbeabsichtigte Speicherung von Daten durch Begrenzung der Daten der empfangenen Parameter. Um Updates zu vermeiden. Dieses Mal werden wir ein Beispiel vorstellen, das von einer Frima-App ausgeht, die Produkte verkauft.

3. Grundkonfiguration und Verwendung

-Die Grundkonfiguration ist wie folgt.

#・ ・ ・ Weggelassen
 def new
    @item = Item.new
  end

 def create
   @item = Item.new(item_params)
 end

 private

 def item_params
   params.require(:item).permit(:name, :explanation, :category_id, :status_id, :delivery_fee_id, :shipping_region_id, :shipping_day_id, :selling_price, :image).merge(user_id: current_user.id)
 end

wie benutzt man

-Strong-Parameter werden als private Methoden definiert.

 def create
   @item = Item.new(item_params)← Hier
 end

4. Grenzwert

4-1.require (Modellname)

#Anwendungsbeispiel
params.require(:Modellname)

params.require(:item)

#Alle im Artikelmodell enthaltenen Daten werden gespeichert.
Verwenden Sie allow, wenn Sie die Werte, die Sie speichern möchten, nach dem Spaltennamen im angegebenen Modell begrenzen möchten.

4-2.permit (: Taste 1, Taste 2 ...)

#Anwendungsbeispiel
params.permit(:Schlüssel 1, :Schlüssel 2....)

params.require(:item).permit(:name, :explanation, :category_id, :status_id, :delivery_fee_id, :shipping_region_id, :shipping_day_id, :selling_price, :image)

#Wenn Sie im angegebenen Modell den Wert begrenzen möchten, den Sie speichern möchten, begrenzen Sie den Spaltennamen mit allow.

4-3.merge (: externer Schlüssel, den Sie zusammenführen möchten usw.)

#Anwendungsbeispiel: Wenn Sie die Informationen des Benutzers verknüpfen möchten, der das Produkt aufgelistet hat
params.merge(user_id: current_user.id)

params.require(:item).permit(:name, :explanation, :category_id, :status_id, :delivery_fee_id, :shipping_region_id, :shipping_day_id, :selling_price, :image).merge(user_id: current_user.id)

Hinweis

Sie können ** current_user.id ** verwenden, da Sie ** devise ** verwenden. </ font> Es gab einen Artikel, der hilfreich war, also werde ich ihn teilen.

Liste der in Rails entwickelten Hilfsmethoden https://qiita.com/tobita0000/items/866de191635e6d74e392

5. Schließlich

Wenn Sie Vorschläge haben, würde ich mich freuen, wenn Sie mich für Ihr Studium informieren könnten.

Recommended Posts