Artikelformat

Migration zu Rails 4.x mit “Strong Parameters”

Ruby Logo

Eine hilfreiche Rake-Task

Zur Zeit bin ich dabei, eine drei Jahre alte Ruby-On-Rails Anwendung von Version 3.2 auf Version 4.2 zu aktualisieren. Mit Rails 4.0 wanderte die Parameterüberprüfung von dem “Model” in den “Controller”. Das ist auch gut so, denn je nach Kontext oder Nutzerrechten kann man so andere Felder erlauben.
Jedoch macht die Migration viel Arbeit, da in jeden Controller jedes Feld einzeln in einer Whitelist freigeschaltet werden muss. Und in meiner Anwendung gibt über 60 Controller…

Kann man sich die Arbeit erleichtern? Bei meiner Internetrecherche bin ich auf keine überzeugende Lösung gestoßen.
So habe ich eine kleines Skript geschrieben, welches wenigstens den schreib-intensivsten Teil der der Arbeit abnimmt. Das Skript iteriert über alle Modelle und erzeugt jeweils Vorlage für die Parameterprüfungsmethode.

def modelname_params
  params.require(:modelname).
    permit(:attribut1, :attribut2, ....)
end

Die generierten Methoden muss man dann in die jeweiligen Controller kopieren. Die Parameterliste muss man zwar meist noch anpassen, man braucht sie nicht mehr komplett neu zu schreiben.

Das Skript habe ich als Rake-Task bei Github veröffentlicht:

strong_methods.rake

Autor: Karsten Meier

Weil ich gerne Probleme löse bin ich Informatiker geworden. Für meine Kunden berate und konzeptioniere ich und entwickle mit fast allem, was einen Prozessor hat. Sie finden mich auch auf Twitter

Hinterlassen Sie eine Antwort

Pflichtfelder sind mit * markiert.