Per impostazione predefinita, ActiveRecord accetta tutti i campi dalla tabella del database corrispondente e crea attributi pubblici per tutti loro.C'è un modo per rendere privati gli attributi di Rails ActiveRecord?
Penso che sia ragionevole non rendere pubblici tutti gli attributi in un modello. Ancora di più, l'esposizione degli attributi che sono destinati ad uso interno ingombrare l'interfaccia del modello e viola il principio di incapsulamento.
Quindi, c'è un modo per rendere letteralmente alcuni degli attributi private
?
Oppure, forse dovrei passare ad un altro ORM?
Qualsiasi motivo per cui non avrei/non potuto usare quanto segue per realizzare questo? privato attr_accessor my_private_attribute –
@TC: perché in realtà non verranno tracciati correttamente gli attributi. i metodi write_attribute/read_attribute sono il modo in cui si interfacciano con active_record –
in realtà, write_attribute non mantiene il valore su DB. Si dovrebbe chiamare self.save in seguito per aggiornare effettivamente il record nel DB. – Magne