2009-08-10 19 views
21

Jak sprawdzić typ danych dla czegoś, co zostało pobrane z bazy danych?(Rails) Czy istnieje sposób na sprawdzenie typu danych pola?

Na przykład, jeśli mam instancję modelu @model z polem bazy danych "title", chcę móc kodować coś podobnego do @ model.title.type i zwracać "String". Czy Railsy mają do tego wbudowaną funkcjonalność?

Odpowiedz

33

Spróbuj tego:

@model.column_for_attribute('title').type 

powinien powrócić :string, :text, :integer itp

Klasa ActiveRecord Column zawiera również szereg innych atrybutów: default, ograniczenia, nazwa, null, precyzja, primary, scale, sql_type, type.

+1

Uwaga ma również: nazwę, precyzję, podstawową, zerową, limit i domyślną –

+0

Dzięki, to się udało. – Karl

8

W Rails 3, dla mojego modelu "Firm" użyłbym Firm.columns_hash.

Firm.columns_hash["name"].type #returns :string 

Jeśli chcesz iterację nich, chcesz zrobić coś takiego:

Firm.columns_hash.each {|k,v| puts "#{k} => #{v.type}"} 

który wyświetli następujący:

id => integer 
name => string 
max_trade_qty => integer 

i tak dalej.

Powiązane problemy