Me gustaría saber si es posible obtener los tipos (como los conoce AR, por ejemplo, en el script de migración y la base de datos) programáticamente (sé que los datos existen allí en algún lugar) .Obteniendo los tipos de los atributos en un objeto ActiveRecord
Por ejemplo, puedo tratar con todos los nombres de los atributos:
ar.attribute_names.each { |name| puts name }
.attributes simplemente devuelve un mapeo de los nombres de sus valores actuales (por ejemplo, no hay información de tipo si el campo no está establecido).
Algunos de los lugares que he visto con la información del tipo:
en escritura/consola, escriba el nombre de una entidad AR:
>> Driver
=> Driver(id: integer, name: string, created_at: datetime, updated_at: datetime)
Así que está claro que conoce los tipos. Además, existe .column_for_attribute, que toma un nombre de attr y devuelve un objeto de columna, que tiene el tipo enterrado en el objeto de columna de base de datos subyacente, pero no parece ser una forma limpia de obtenerlo.
También me interesaría si hay una forma que sea amigable para el nuevo "ActiveModel" que viene (rails3) y está desacoplada de las especificaciones de la base de datos (pero tal vez la información tipográfica no formará parte de ella, puedo Parece que no sé si lo es).
Gracias.
¿Sabes cómo puedo probar si un valor coincide con una columna, algo como esto '2.is_a? Driver.columns_hash ["nombre"]. Tipo ' – mariowise
No, no sé. –
Puedo confirmar que esto todavía funciona en Rails 4.2 – Phil