Wenn ich die attr_accessible
verwenden, um festzulegen, welche von meinem Modell Feld aussetzen ich, ist es auch für script/console wahr? Ich meine etwas, das ich nicht angegeben habe, da attr_accessible
nicht auch durch die Konsole zugänglich sein wird?attr_accessible in Schienen Active Record
Antwort
Dies gilt nur für die Massenzuweisung. Zum Beispiel, wenn Sie sind attr_protected :protected
in Ihrem Modell setzen:
>> Person.new(:protected => "test")
=> #<Person protected: nil>
Umgekehrt könnten Sie setzen alle Attribute, die Sie als zugänglich wollen attr_accessible
verwenden.
Allerdings wird die folgende noch arbeiten:
>> person = Person.new
=> #<Person protected: nil>
>> person.protected = "test"
=> #<Person protected: "test">
Dies ist das gleiche Verhalten wie in Controller, Ansichten etc. attr_protected
schützt nur gegen Massenzuordnung von Variablen, in erster Linie von Formen usw.
fand ich, warum:
eine weiße Liste der Modell Attribute an, die über Massenbelegung, wie new(attributes)
, update_attributes(attributes)
oder attributes=(attributes)
eingestellt werden kann. Diese ist das Gegenteil von dem attr_protected Makro:
Mass-assignment will only set attributes in this list, to assign to the rest of
attributes you can use direct writer methods. This is meant to protect sensitive
attributes from being overwritten by malicious users tampering with URLs or forms.
If you‘d rather start from an all-open default and restrict attributes as needed,
have a look at `attr_protected`.
So bedeutet es, dass es nur die Massenbelegung vermeiden, aber ich kann so eingestellt noch einen Wert.
Die Konsole verhält sich genau wie Ihre Rails-Anwendung. Wenn Sie einige Attribute für ein bestimmtes Modell geschützt haben, können Sie diese Attribute weder über die Konsole noch über die Rails-App selbst zuweisen.
Wenn Sie etwas als attr_accessible
angeben, können nur diese Dinge in der Konsole oder über die Website-Schnittstelle zugegriffen werden.
zB: Angenommen, Sie name
und email
gemacht werden attr_accessible
: created_at
attr_accessible :name, :email
und links und updated_at
(die Sie sollen). Dann können Sie nur diese Felder in der Konsole bearbeiten/aktualisieren.
Wenn Sie ein Feld bilden Ihr Modell verfügbar machen möchten, können Sie
attr_accessor :meth # for getter and setters
attr_writer :meth # for setters
attr_reader :meth # for getters
oder wenn Sie ein bestimmtes Verhalten zu Ihrem Attribut möchten hinzufügen können, werden Sie virtuelle Attribute
def meth=(args)
...
end
def meth
...
end
verwenden müssen Prost.
- 1. Active Record Associations - Schienen
- 2. Schienen Benutzer.joins.not (...) in Active Record?
- 3. Schienen 5 Active Record has_and_belongs_to_many
- 4. Schienen - attr_accessible & Massenzuweisung
- 5. wie die ausführende sql aus Active record in schienen 2
- 6. Active Record enthält mit STI
- 7. CodeIgniter Active Record Sortierung
- 8. Rails Active Record Instanzvariablen
- 9. Active Record Query - Rails
- 10. Ruby Active Record IN-Klausel
- 11. Yii2 Unterabfrage in Active Record
- 12. Opting Active Record in CodeIgniter
- 13. Concat in Codeigniter Active Record
- 14. Schienen: nicht initialisierter konstanter Fehler auf Active Record destroy
- 15. Rails Active Record Tabellenverknüpfungen
- 16. Rails - Zählschleife mit Active Record
- 17. Verwirrung Cachen Active Record Abfragen mit Rails.cache.fetch
- 18. Active Record mit Postgres überspringen manchmal Index
- 19. Rails rund Active Record Abfrageergebnis
- 20. Array zu Active Record Modell
- 21. Rails Active Record zum Thema
- 22. Join Tabelle Active Record Query
- 23. Active Record-Abfrage auf will_paginate
- 24. Convert SQL-Abfrage Active Record
- 25. coderigniter active record link join
- 26. Tabellenpräfix mit Castle Active Record
- 27. Rails 4 Active Record-Abfrage
- 28. CodeIgniter Active Record wo nicht in String
- 29. ORM und Active Record Pattern in PHP?
- 30. Methoden definieren Klasse in Active Record-Klasse