Wie ein Rails Modell Attribut schützen?
-
02-07-2019 - |
Frage
Meine Rechnung Modell verfügt über eine address_id Attribut, und ich will nicht, diese address_id FÜR IMMER ändern. Deshalb möchte ich nicht, dass dies außerhalb der Klasse geschehen:
invoice.address_id = 1
invoice.address = some_address
Die Schienen fügt automatisch diese address_id Attribut auf das Modell aus der Rechnungstabelle, so wie kann ich erklären, dieses Attribut private / geschützt? Der Aufruf
attr_protected :address_id
ist höchstwahrscheinlich die Lösung nicht, da auf der Grundlage der Dokumentation verhindert nur Massenzuweisungen.
Danke!
Lösung
Sie wollen attr_readonly
.
Andere Tipps
Nicht so schön wie ein Motto, sondern Code soll unten arbeiten (und man kann immer etwas metaprogramming tut eine ‚unveränderlich‘ Methode zu schreiben)
def address_id=(id)
if new_record?
write_attribute(:address_id, id)
else
raise 'address is immutable!'
end
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow