Ich möchte wissen, ob es möglich ist, die Typen (wie von AR bekannt - zB in dem Migrationsskript und der Datenbank) programmgesteuert zu erhalten (ich weiß, dass die Daten dort irgendwo vorhanden sind) .Abrufen der Typen der Attribute in einem ActiveRecord-Objekt
Zum Beispiel kann ich mit allen Attributnamen umgehen:
ar.attribute_names.each { |name| puts name }
.attributes gibt nur eine Zuordnung der Namen auf ihre aktuellen Werte (zB keine Typinformationen, wenn das Feld nicht gesetzt ist).
Einige Orte, die ich mit der Typinformation gesehen haben:
in Skript/Konsole, den Namen eines AR Entitätstyp:
>> Driver
=> Driver(id: integer, name: string, created_at: datetime, updated_at: datetime)
So klar es die Typen kennt. Außerdem gibt es .column_for_attribute, das einen attr-Namen annimmt und ein column-Objekt zurückgibt, dessen Typ im zugrunde liegenden Datenbankspaltenobjekt vergraben ist, aber es scheint kein sauberer Weg zu sein, um es zu erhalten.
würde mich auch interessieren, wenn es einen Weg gibt, der für das neue "ActiveModel", das kommt (rails3), freundlich ist und von Datenbankspezifikationen entkoppelt ist (aber vielleicht Typ Info nicht dazu gehört, kann ich Es scheint nicht herauszufinden, ob es so ist.
Danke.
Wissen Sie, wie kann ich testen, ob ein Wert mit einer Spalte übereinstimmt, etwa '2.is_a? Driver.columns_hash ["name"]. Type ' – mariowise
Nein, weiß nicht. –
Ich kann bestätigen, dies funktioniert immer noch in Rails 4.2 – Phil