Ich habe eine Legacy-DB, wo zwei ziemlich ähnliche Objekttypen in verschiedenen Tabellen mit unterschiedlichen Spalten und Beziehungen gespeichert sind. Es gibt eine Elternklasse, die für die Überbrückung der Lücke verwendet wird, aber ich habe ein wenig verloren, wie ich sie implementieren kann, um die untergeordneten Klassen zu emulieren. Idealerweise sollten Methoden wie find_all_by_*
auf beiden Unterklassen ausgeführt werden und alle Ergebnisse in einem einzigen Array zurückgeben. Gibt es einen kanonischen Weg, um das zu tun, einfacher als das Kopieren the code of find
?Rails: Wie find * für eine abstrakte Klasse implementieren?
2
A
Antwort
0
Okay, interessante Frage. Ich bin mir nicht sicher, ob es eine bessere Lösung als diese gibt, aber ich würde ein wenig Methode verwenden, um Magie zu vermeiden.
class MyVirtualModel
def respond_to?(method, include_private = false)
if method.to_s =~ /^find.*/
RealModel1.respond_to?(method, include_private) && RealModel2.respond_to?(method, include_private?)
else
false
end
end
def method_missing(method, *arguments, &block)
if method.to_s =~ /^find.*/
resultset1 = RealModel1.send(method, arguments)
resultset2 = RealModel2.send(method, arguments)
return resultset1 + resultset2
end
end
end
+0
Ordentlich Lösung, aber es sieht so aus, als ob der ganze Block umgangen wird: 'PG :: Error: ERROR: relation" "existiert nicht'. 'binding.pry' in beiden Methoden hat nicht geholfen - Sie werden nicht vom Rails Webserver aufgerufen. – l0b0
Verwandte Themen
- 1. Nicht definiert mit Klasse implementieren abstrakte Klasse
- 2. Implementieren abstrakte Basismodellklasse, die Rails Way ™
- 3. Wie erzwingen abstrakte Klasse Childs eine statische Methode zu implementieren?
- 4. Implementierung DbCommand implementieren nicht alle abstrakte Klasse
- 5. eine abstrakte Klasse erbt eine andere abstrakte Klasse Ausgabe
- 6. Java abstrakte Klasse, abstrakte Konstruktor
- 7. Wie instanziieren abstrakte Klasse C#?
- 8. Sollte eine abstrakte Klasse mindestens eine abstrakte Methode haben?
- 9. Hat eine abstrakte Klasse eine VTABLE?
- 10. Klasse muss entweder abstrakt erklärt werden oder abstrakte Methode implementieren
- 11. Kann eine anonyme Klasse die abstrakte Methode der abstrakten Klasse implementieren?
- 12. Scala akka: implementieren abstrakte Klasse mit Subtyp Parameter
- 13. Klasse Design: Klasse implementieren eine Schnittstelle implementieren eine andere Schnittstelle
- 14. Klasse muss entweder abstrakte Methode Fehler erklärt abstrakt oder implementieren
- 15. Wie generische abstrakte Klasse zurückgeben?
- 16. abstrakte Klasse implementiert keine Schnittstelle
- 17. Abstrakte Klasse, wie Methode abstrakt
- 18. Klasse muss abstrakt erklärt werden oder implementieren abstrakte Methode
- 19. Abstrakte Klasse und Schnittstelle zusammen?
- 20. Warum ist java.lang.Throwable nicht eine abstrakte Klasse?
- 21. Abstrakte Klasse mit Standardwert
- 22. Deserialize Abstrakte Klasse
- 23. Wie implementiert man eine abstrakte Klasse in F #?
- 24. Bestes Beispiel für abstrakte Klasse in Android
- 25. Byte-Buddy: Erstellen Sie die Implementierung für eine abstrakte Klasse
- 26. C++: Eine abstrakte Klasse als Mitglied
- 27. JMockit abstrakte Klasse Instanz
- 28. Copykonstruktor: deep eine abstrakte Klasse Kopieren
- 29. Hibernate-Mapping (XML) eine abstrakte Klasse
- 30. abstrakte Klasse Fehler einfach Klasse
Wie wäre es mit dem Erstellen einer Sicht in der DB? – Yanhao