it-swarm.com.de

Rails console: Konstante kann nicht automatisch geladen werden

Ich habe ein Customer_ratings-Modell, mit dem Benutzer gegenseitig Feedback hinterlassen können. Die Web-App funktioniert ordnungsgemäß und Feedback wird gesammelt, gespeichert und angezeigt.

Ich wollte ein Feedback über die Rails Konsole löschen, aber wenn ich Customer_rating.all Eingebe, erhalte ich den folgenden Fehler:

LoadError: Unable to autoload constant Customer_rating, expected /Users/myapps/app/models/customer_rating.rb to define it

Wenn ich Customer_rating [0] eingebe, erhalte ich auf ähnliche Weise:

RuntimeError: Circular dependency detected while autoloading constant Customer_rating

Ich habe dieses Problem nicht beim Zugriff auf andere Tabellen über meine Konsole.

Was könnte das Problem verursachen und warum würde dieser Fehler nicht verhindern, dass Customer_ratings über die Web-App ordnungsgemäß funktioniert?

22
dmt2989

Es scheint, als wäre die Namenskonvention durcheinander.

Gemäß der Rails-Namenskonvention sollte Dateinamen in snake_case Und Klassennamen in CamelCase stehen. In Ihrem Szenario sollte der Dateiname customer_rating.rb Und der Klassenname CustomerRating sein.

Nachdem Sie diese Änderungen vorgenommen haben, verwenden Sie CustomerRating.all (Da der aktualisierte Klassenname CustomerRating lautet), um alle Kundenbewertungen abzurufen. nicht verwendenCustomer_rating.all.

41
Kirti Thorat

Ich möchte auch ein Szenario für dieses Problem hinzufügen, das ich als zukünftige Referenz gefunden habe.

Ich verwende Rails 4.0 und hatte das gleiche Problem, aber ich hatte ein Modell namens Student in student.rb, das in einem Ordner namens Student enthalten war. Ich habe es nicht bemerkt Zunächst stellte jedoch der Ordnername das Problem dar. Das Ändern des Ordnernamens in einen anderen Namen als einen Modellnamen löste das Problem.

7
Ryan Bartley