Ho una colonna nel mio database MySQL che è di tipo TINYINT (1). Ho bisogno di memorizzare interi effettivi in questa colonna. Il problema è che, a causa del tipo di colonna, Rails 4.1 presuppone che questa colonna contenga solo valori booleani, quindi tipizza tutti i valori oltre a 0 o 1 per essere 0 quando scrive nel database.Rails 4.1 - Scrivi nel database MySQL senza typecasting
Non voglio semplicemente disabilitare l'emulazione booleana poiché abbiamo un numero di colonne nel nostro database in cui usiamo TINYINT (1) per rappresentare effettivamente un valore booleano. E al momento non sono in grado di modificare i tipi di colonna in MySQL.
Come posso forzare Rails 4.1 per ignorare il passaggio di tipizzazione e scrivere invece direttamente al database?
(Questo estratto dalle rotaie 4.1 sorgente può essere di qualche utilità: https://github.com/rails/rails/blob/4-1-stable/activerecord/lib/active_record/attribute_methods/write.rb)
contesto aggiuntivo per altri lettori, 'TINYINT (1)' può memorizzare valori interi firmati -127 .. + 127 http://stackoverflow.com/questions/4401673/mysql- boolean-tinyint1-hold-values-up-to-127 ma MySQL [usa 'BOOLEAN' come sinonimo per esso] (https://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview .html). –
Sarebbe la fine del mondo se si aprisse quella colonna con un normale 'INT' usando una migrazione? – tadman
@tadman Credimi, il pensiero mi è passato per la mente, ma per ragioni al di fuori del mio controllo non sono in grado di cambiare la struttura di questo database. –