我想知道是否有可能以编程方式获取类型(如AR所知 - 例如在迁移脚本和数据库中)(我知道数据存在于某处) 。在ActiveRecord对象中获取属性的类型
例如,我可以处理所有属性名称:
ar.attribute_names.each { |name| puts name }
.attributes仅返回名称与其当前值的映射(例如,如果现场没有设置任何类型的信息)。
我与类型信息看到了一些地方:
在脚本/控制台,输入AR实体的名称:
>> Driver
=> Driver(id: integer, name: string, created_at: datetime, updated_at: datetime)
所以很明显它知道的类型。另外,还有.column_for_attribute,它接受一个attr名称并返回一个列对象 - 它具有隐藏在底层数据库列对象中的类型,但它似乎不是一种干净的方式来获取它。
我也会感兴趣的是,如果有一种方法对即将到来的新的“ActiveModel”(rails3)是友好的,并且与数据库细节分离(但也许类型信息不会成为它的一部分,我可以似乎没有发现它是否是)。
谢谢。
你知道我该如何测试一个值是否与列匹配,像这样的 '2.is_a? Driver.columns_hash [“name”] .type' – mariowise 2014-07-31 19:03:04
不,不知道。 – 2014-07-31 21:06:01
我可以确认这仍然在Rails 4.2中工作 – Phil 2017-09-22 11:58:52