Получение типов атрибутов в объекте ActiveRecord

Я хотел бы знать, возможно ли получить типы (как известный 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) и разъединяется от специфических особенностей базы данных (но, возможно, введите информацию, то не будет часть его, я, может казаться, не узнаю, ли это).

Спасибо.

64
задан Michael Neale 8 March 2010 в 06:03
поделиться

1 ответ

Вы можете получить доступ к типам столбцов, выполнив следующие действия:

#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
21
ответ дан 24 November 2019 в 15:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: