Wie setze ich den Wert eines Attributes durch die SQL-Funktion?

8

Ich versuche, einen Attribut-Setter in einem ActiveRecord-Modell seinen Wert in die postgres-Funktion text2ltree () zu schreiben, bevor rails seine SQL-Abfrage generiert.

Zum Beispiel

%Vor%

Sollte etwas wie

erzeugen %Vor%

Was ist der beste Weg, dies zu tun?

    
Nick Colgan 27.04.2012, 02:23
quelle

1 Antwort

2

BEARBEITEN: Um genau das zu erreichen, wonach Sie suchen, überschreiben Sie den Standard-Setter in Ihrer Modelldatei:

%Vor%

Dann funktioniert der Code, den Sie oben haben.

Ich bin daran interessiert, mehr über die Interna von ActiveRecord und seine undurchdringlichen Metaprogrammierungsgrundlagen zu erfahren. Als Übung habe ich versucht, das zu erreichen, was Sie in Ihren Kommentaren unten beschrieben haben. Hier ist ein Beispiel, das für mich funktioniert hat (das ist alles in post.rb):

%Vor%

Konsolenausgabe:

%Vor%

Im wirklichen Leben nehme ich an, dass Sie include das Modul in ActiveRecord :: Base in einer Datei irgendwo früher im Ladepfad haben möchten. Sie müssen auch den Typ des Arguments richtig behandeln, das Sie an die Datenbankfunktion übergeben. Schließlich habe ich gelernt, dass connection.execute von jedem Datenbankadapter implementiert wird, so dass die Zugriffe auf das Ergebnis in Postgres anders sein können (dieses Beispiel ist SQLite3, wobei die Ergebnismenge als ein Array von Hashes und der Schlüssel als erstes zurückgegeben wird) Datensatz ist 0].

Dieser Blogbeitrag war unglaublich hilfreich:

Ссылка

wie auch der Rails-Leitfaden für das Plugin-Authoring:

Ссылка

Auch, was es wert ist, denke ich, dass ich das in Postgres mit einer Migration machen würde, um eine Regel zum Umschreiben von Abfragen zu erstellen, aber das war eine großartige Lernerfahrung. Hoffentlich funktioniert es und ich kann aufhören darüber nachzudenken, wie es jetzt geht.

    
Steve Rowley 30.04.2012, 19:02
quelle