Я хотел бы знать, возможно ли получить типы (как известный AR - например, в сценарии миграции и базе данных) программно (я знаю, что данные существуют там где-нибудь).
Например, я могу иметь дело со всеми названиями атрибута:
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) и разъединяется от специфических особенностей базы данных (но, возможно, введите информацию, то не будет часть его, я, может казаться, не узнаю, ли это).
Спасибо.
Вы можете получить доступ к типам столбцов, выполнив следующие действия:
#script/console
Driver.columns.each {|c| puts c.type}
Если вы хотите получить список всех типов столбцов в конкретной Модели, вы можете сделать:
Driver.columns.map(&:type) #gets them all
Driver.columns.map(&:type).uniq #gets the unique ones