2016-06-17 8 views
0

Ich arbeite an einem Rubin Juwel, die Code in anderer Sprache generieren kann. Der Edelstein muss die Modelle in der aktuellen Schienen-App laden. Und es ist als Generator implementiert, der einen Parameter akzeptiert - den Tabellennamen. Innen ist es, lesen Sie die Spalten-Definition aus der Tabelle auf diese Weise:Verwenden Sie aktive Aufzeichnung in Rubin Edelstein

tableklass = table_name.to_s.constantize # get the class name from table_name 
cols = tableklazz.columns # get columns definitions. 

Wenn ich den Generator laufen ‚g mygen Produktschienen‘. Es hat mich immer den Fehler unten:

.../Rubin/Edelstein/2.3.0/Edelstein/Active-4.2.4/lib/active_support/Inflector/methods.rb: 261: in `const_get‘ : falscher Name Produkte (NameError)

Wie kann ich diesen Fehler beheben? Oder gibt es einen anderen besseren Weg (lesen Sie die Tabelleninformationen, um Code zu generieren)?

Antwort

2

constantize expects Kamel Eingabe. Ich bin mir nicht sicher, was passiert in Ihrem Generator, aber es sieht aus wie constantize empfängt schließlich products als Parameter. Sicherste Version von dem, was Sie zu tun versuchen:

table_name.to_s.singularize.camelize.constantize 

Alles unter funktionieren würde:

:products.to_s.singularize.camelize.constantize 
:product.to_s.singularize.camelize.constantize 
'product'.to_s.singularize.camelize.constantize 
Product.to_s.singularize.camelize.constantize 
+0

Es funktioniert. Vielen Dank! Das ist mein erstes Juwel, du hast ein großes Juwel gerettet! :-) – douyw

Verwandte Themen