2010-12-27 11 views

Antwort

5

attr_accessible eine weiße Liste von Attributen ist, die Masse zu dem Modell zugeordnet werden kann. Es ist eine Strategie, die besagt, dass Sie alle Attribute explizit auflisten müssen. Auf diese Weise sind die "offenen Ports" bekannt und im Modell deutlich aufgeführt. Dies ist das Gegenteil von attr_protected, das eine schwarze Liste von Feldern ist, die vor einer Massenzuweisung geschützt werden sollen.

Oftmals gibt es auch in moderaten bis einfachen Anwendungen Fremdschlüssel-Typenfelder wie user_id oder company_id, die nicht durch Benutzereingaben ermittelt werden können. Diese Felder müssen vor Benutzereingaben geschützt werden. Das Primärschlüsselfeld 'id' ist normalerweise ohnehin durch Rails geschützt.

Wenn Ihr Modell über alle Spalten verfügt, die durch Eingabe von Form aktualisiert werden können, dann fahren Sie mit atr_accessible fort (oder Sie können attr_accessible für dieses spezielle Modell überspringen).

Werfen Sie das Baby nicht mit dem Bade raus, attr_accessible ist eine gute Sache und stellen Sie sicher, dass Sie es in anderen Modellen verwenden, die nicht so offen sind wie die, über die Sie in Ihrer Frage sprechen.

I allgemein Verwenden Sie attr_protected bei Modellen mit einer großen Anzahl von Spalten und attr_accessible bei den meisten anderen.

+0

Danke. Ich denke es ist jetzt klar. Ich werde attr_accessible immer verwenden, auch wenn alle Spalten durch die Formulareingabe aktualisiert werden können, da fremde Schlüsseltypfelder geschützt werden sollten. –

2
+0

OK, solange ich verstanden habe attr_protected/attr_accessible wird für Attribute verwendet, die niemand ändern soll. Dies sind die Attribute, die Benutzern nicht zum Festlegen in Formularen zur Verfügung stehen. Außerdem können Hacker die Beziehungen zwischen Modellen ändern, wenn bestimmte Attribute nicht geschützt sind. Am besten ist es mit attr_accessible. –

Verwandte Themen