Mam kolumnę w mojej bazie danych MySQL, która jest typu TINYINT (1). Muszę przechowywać rzeczywiste liczby całkowite w tej kolumnie. Problem polega na tym, że z powodu typu kolumny, Railsy 4.1 zakładają, że ta kolumna zawiera tylko wartości logiczne, więc powoduje, że wszystkie wartości oprócz 0 lub 1 mają wartość 0, gdy są zapisywane do bazy danych.Rails 4.1 - Zapis do bazy danych MySQL bez typowania danych
Nie chcę po prostu wyłączać emulacji boolowskiej, ponieważ w naszej bazie danych znajduje się kilka kolumn, w których używamy TINYINT (1) do rzeczywistego reprezentowania wartości logicznej. I obecnie nie jestem w stanie zmienić typów kolumn w MySQL.
Jak zmusić Rails 4.1 do ominięcia etapu typowania i zamiast tego zapisania bezpośrednio w bazie danych?
(ten fragment z Rails 4.1 może być źródłem pewnego użytku: https://github.com/rails/rails/blob/4-1-stable/activerecord/lib/active_record/attribute_methods/write.rb)
Dodatkowy kontekst dla innych czytelników, 'TINYINT (1)' może przechowywać podpisane wartości całkowite -127 .. + 127 http://stackoverflow.com/questions/4401673/mysql- boolean-tinyint1-hold-values-up-to-127 ale MySQL [używa 'BOOLEAN' jako synonimu tego] (https://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview .html). –
Czy to byłby koniec świata, jeśli otworzysz tę kolumnę do zwykłego "INT" używającego migracji? – tadman
@tadman Uwierz mi, ta myśl przyszła mi do głowy, ale z przyczyn pozostających poza moją kontrolą nie jestem w stanie zmienić struktury tej bazy danych. –