Uno degli aspetti più apprezzati di buona parte dei framework moderni, è l’ActiveRecord: attraverso questo strumento è possibile gestire con grande facilità i dati attraverso moltissime funzioni quali la possibilità di gestire in maniera quasi automatizzata un database oppure effetturare controlli sintattici sui dati inseriti.
In questi giorni, però, ho avuto la necessità di strutturare un model in Rails in cui tutti dati inseriti non devono essere persistenti e pertanto devono “morire” una volta utilizzati; per fare questo, sarebbe sufficiente creare una nuova classe che non eredita la classe ActiveRecord::Base, però, così facendo, si perdono le funzionalità di contollo automatico del form.
Ho scartato anche l’idea di creare un model ActiveRecord senza campi e con solo attributi “attr_accessor”, perchè si crea comunque una tabella vuota nel DB e, per pulizia, è una cosa che non mi piace.
Ecco come ho fatto io.
Innanzi tutto ho creato un nuovo model chiamato “EphemeralModel” che eredita ActiveRecord::Base
1 2 3 4 5 6 |
|
A questo punto possibile utilizzare la nuova classe come base per i nostri model non persistenti
1 2 3 4 |
|
La classe NonPersistentEmail è una classe ActiveModel a tutti gli effetti, per cui possiamo utilizzala con la funzione “form_for”, oppure (come da esempio) aggiungere una validazione… solo che i dati inseriti nel form saranno utilizzabili solo per l’elaborazione e non saranno salvati nel database.