Mam konfigurację RoR + MySQL. W bazie danych znajduje się pole Tinyint t. Kiedy czytam wartość t z Railsów, otrzymuję true lub false, ponieważ pole Tinyint jest interpretowane przez Railsy jako logiczne. Jak na razie dobrze.
Jak odczytać to pole t jako rzeczywistą liczbę całkowitą z Railsów?
2 odpowiedzi
http://apidock.com/rails/ActiveRecord/AttributeMethods/BeforeTypeCast/attributes_before_type_cast
Na przykład:
Model.first.attributes_before_type_cast['your_boolean_field']
To zależy od twojej bazy danych, jaka wartość zostanie zwrócona, w postgesql jest to 'f' lub 't'
Aby oprzeć się na odpowiedzi @sumskyi, jeśli zawsze uzyskujesz dostęp do tego pola jako zwykłej liczby całkowitej, możesz po prostu nadpisać wbudowaną metodę modelu i oszczędzić sobie urazu związanego z powtarzalnym ruchem:
class GroceryStore < ActiveRecord::Base
# rating is a TINYINT column
# we just redefine the method here to return the value cast how we want it
def rating
self.attributes_before_type_cast['rating'].to_i
end
end
Teraz, jeśli wywołasz grocerystore.rating
, otrzymasz liczbę całkowitą zamiast wartości logicznej.
Podobne pytania
Powiązane pytania
Nowe pytania
mysql
MySQL to darmowy system zarządzania relacyjnymi bazami danych (RDBMS) o otwartym kodzie źródłowym, który wykorzystuje język SQL (Structured Query Language). NIE UŻYWAJ tego znacznika dla innych baz danych, takich jak SQL Server, SQLite itp. Są to różne bazy danych, które używają własnych dialektów SQL do zarządzania danymi.