Ist es in ActiveRecord möglich, den Namen eines Attributs so anzupassen/zu überschreiben, dass es nicht mit dem Spaltennamen in der Datenbank übereinstimmt?Benutzerdefinierte benannte Attribute in Rails
Mein spezieller Fall beinhaltet eine ältere Spalte, "Revision", die ich zu diesem Zeitpunkt nicht entfernen kann. Der Spaltenname steht in Konflikt mit acts_as_audited. Was natürlich den alten Code, den ich brauche, bis meine Migrationen abgeschlossen sind.
Meine gewünschte Lösung wäre, den Attributnamen für diese Spalte zu überschreiben und die wenigen Bereiche, die sie aufrufen, zu aktualisieren. Dadurch kann die Legacy-Spalte neben acts_as_audited laufen.
Ich gebe das eine Chance und lass es dich wissen. Schöne Meta. – catalpa
Das gibt mir einen Fehler: NoMethodError: undefinierte Methode 'define_method' – catalpa
define_method ist privat, Sie müssen also im Kontext der Klasse sein, zu der Sie die Methode hinzufügen. (Ich es auseinander brach auf einige der Bereiche, machen ein bisschen mehr wiederverwendbar) def after_initialize \t name_column 'Revision', 'legacy_revision' Ende def name_column (column_name, new_name) { '' =>: read_attribute, '=' =>: write_attribute, '?' =>: attribut_präsent? } .each do | suffix, Methode | add_method (Dokument, "# {neuer_name} # {suffix}") {| * args | senden Methode, column_name, * args} Ende Ende def add_method (c, m, & b) \t c.class_eval {define_method (m, & b)} Ende – catalpa