Ho due modelli correlati, ad esempio Activity
e Step
. Activity has_many :steps
e Step belongs_to :activity
che significa che la tabella per steps
ha una colonna activity_id
.Previene la modifica di un campo nel modello Rails
Questo è in Hobo 1.3, quindi Rails 3.0.
Quello che voglio è quello di garantire che dopo Step
creazione non è possibile spostare un passaggio all'altro Activity
. Non vogliamo che il campo activity_id
cambi.
Ho rimosso il campo dai moduli di modifica, ma sto cercando un vincolo più forte. Essenzialmente voglio verificare su update
(non su create
) che la colonna non sia stata toccata. La documentazione di Hobo non suggerisce nulla del genere all'interno di Hobo, quindi guardo allo Rails validations, ma finora non ho trovato il vincolo "solo fare questo su aggiornamento" che ricordo, né una convalida che qualcosa non sia mutevole.
'attr_readonly' funziona come pubblicizzato, b ut potrebbe causare una ruga con un altro aspetto dell'app. Proverò l'approccio di convalida domani e vedrò se funziona meglio. – pjmorse
Se è davvero necessario modificare l'ID da qualche altra parte nell'applicazione, è possibile farlo anche con l'approccio di convalida con il seguente: 'step.save (: validate => false)' – Deradon
Non si tratta di un problema di modifica altrove; è una copia di un oggetto. (Quindi, ipoteticamente, abbiamo copiato ipoteticamente l'attività in un modo che ha copiato anche tutti i passaggi, per qualche motivo non funziona, e non ho ancora scavato a fondo nel codice della copia per capire se questo cambiamento lo ha spezzato .) – pjmorse