ActiveAdmin ForbiddenAttributesError

8

Ich bin brandneu für Ruby on Rails. Ich verwende einen ActiveAdmin und ich habe ein Problem beim Erstellen eines AdminUser

ActiveModel :: ForbiddenAttributesError in Admin :: AdminUsersController # create ActiveModel :: ForbiddenAttributesError

Anfrage

Parameter:

  • {"utf8" = & gt; "✓",

  • "authenticity_token" = & gt; "nvV ++ 6GNTdA / nDzw1iJ6Ii84pZPcv2mzg0PK2Cg9Ag0=",

  • "admin_user" = & gt; {"email" = & gt; "[email protected]"},

  • "commit" = & gt; "Erstelle Admin-Benutzer"} *

Rails 4.1.0

activeadmin 1.0.0

Ruby 2.1

app / admin / admin_user.rb

%Vor%

app / models / admin_user.rb

%Vor%

Gemfile

%Vor%

config / environments / development.rb

%Vor%     
dPanda13 14.05.2014, 12:54
quelle

2 Antworten

35

Rails 4 verwendet starke Parameter, die die Whitelist des Attributs vom Modell zum Controller verschieben. Es ist notwendig, die Attribute anzugeben, die Sie in der Datenbank speichern möchten. Sie haben die Attribute in Ihrem Code nicht zugelassen, weshalb Sie ActiveModel::ForbiddenAttributesError erhalten.

Siehe die Dokumentation von ActiveAdmin: Einrichten von starken Parametern

Sie können starke Parameter folgendermaßen einrichten, indem Sie die permit_params -Methode verwenden, die eine Methode namens permitted_params erstellt. Verwenden Sie diese Methode beim Überschreiben von create oder update actions:

%Vor%

Ersetzen Sie :attr1 , :attr2 usw. durch die tatsächlichen Attributnamen, die Sie auf die weiße Liste setzen möchten. Zum Beispiel: :email

    
Kirti Thorat 14.05.2014, 13:32
quelle
1

Was Sie sehen, ist eine Sicherheitsfunktion neuerer Versionen von Rails. Sie müssen eine Whitelist für die Attribute erstellen, die von den vom Benutzer eingegebenen Parametern aktualisiert werden können. Andernfalls müssen Sie jeden Wert manuell festlegen.

Hier ist ein Beispiel für das Whitelisting bestimmter Params:

%Vor%

Siehe die ActiveAdmin-Dokumente zum Thema: Ссылка

    
Threeve 14.05.2014 13:37
quelle