Ich würde gerne wissen, ob es möglich ist, die Typen (wie von AR bekannt - z. B. im Migrationsskript und in der Datenbank) programmgesteuert abzurufen (ich weiß, dass die Daten dort irgendwo vorhanden sind).
Zum Beispiel kann ich mit allen Attributnamen umgehen:
ar.attribute_names.each { |name| puts name }
.attributes gibt nur eine Zuordnung der Namen zu ihren aktuellen Werten zurück (z. B. keine Typinformationen, wenn das Feld nicht festgelegt ist).
Einige Orte, an denen ich es mit den Typinformationen gesehen habe:
Geben Sie in Skript / Konsole den Namen einer AR-Entität ein:
>> Driver
=> Driver(id: integer, name: string, created_at: datetime, updated_at: datetime)
So klar kennt es die Typen. Außerdem gibt es .column_for_attribute, das einen attr-Namen annimmt und ein Spaltenobjekt zurückgibt. Der Typ ist im zugrunde liegenden Datenbankspaltenobjekt vergraben, aber es scheint kein sauberer Weg zu sein, ihn abzurufen.
Mich würde auch interessieren, ob es einen Weg gibt, der für das kommende neue "ActiveModel" (Rails3) geeignet und von den Datenbankspezifikationen entkoppelt ist (aber vielleicht sind Typinformationen nicht Teil davon, ich kann es nicht scheinen herausfinden, ob es ist).
Vielen Dank.
2.is_a? Driver.columns_hash["name"].type