2009-08-10 16 views
21

¿Cómo verifica qué tipo de datos es para algo que se recuperó de la base de datos?(Rieles) ¿Hay alguna manera de verificar el tipo de datos del campo?

Por ejemplo, si tengo alguna instanciación de un modelo @ model con un campo de base de datos "title", quiero poder codificar algo como @ model.title.type y hacer que devuelva "String". ¿Tiene Rails alguna funcionalidad incorporada para esto?

Respuesta

33

Prueba esto:

@model.column_for_attribute('title').type 

debe devolver :string, :text, :integer, etc.

La clase ActiveRecord Column también incluye una serie de otros atributos: por defecto, limitar, nombre, nula, precisión, primary, scale, sql_type, type.

+1

Nota también tiene: nombre, precisión, primario, nulo, límite y predeterminado –

+0

Gracias, eso funcionó. – Karl

8

En Rails 3, para mi modelo "Firm", usaría Firm.columns_hash.

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

Si desea iterar a través de ellos, que haría algo como esto:

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

que emitiría lo siguiente:

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

y así sucesivamente.

Cuestiones relacionadas