我想知道是否可以通过编程方式获取类型(如AR所知-例如在迁移脚本和数据库中),我知道数据在那里某处存在。
例如,我可以处理所有属性名称:
ar.attribute_names.each { |name| puts name }
.attributes 只返回当前名称到值的映射(例如,如果未设置字段,则没有类型信息)。
我看过一些地方它会带有类型信息:
在script/console中,键入AR实体的名称:
>> Driver
=> Driver(id: integer, name: string, created_at: datetime, updated_at: datetime)
很明显它知道类型。此外,还有.column_for_attribute,它接受一个属性名称并返回一个列对象 - 其中类型嵌入在底层数据库列对象中,但似乎没有干净的方法来获取它。
我也很想知道是否有一种适用于即将到来的新“ActiveModel”(rails3)且与数据库细节无关的友好方式(但也许类型信息不会是其中的一部分,我似乎找不到是否是这样)。
谢谢。
2.is_a? Driver.columns_hash["name"].type
。 - mariowise