2016-12-05 4 views
0

Ich versuche, Daten manuell zu einer Tabelle in Schienen mit der Rails-Konsole hinzufügen, aber ich bekomme immer einen undefined local variable or method Fehler.Manuelles Hinzufügen von Daten zu einem Namespaced-Modell in Schienen

Das Modell wird unter Namespace ratings:

Modelle/Bewertungen/value_for_money_score.rb

class Ratings::ValueForMoneyScore < ApplicationRecord 
end 

Um zu versuchen, manuell einen Datensatz zur Datenbank hinzufügen, ich den folgenden in der Konsole:

$ RatingsValueForMoneyScore.create(score: '1', description:"Terrible, definitely not worth what was paid!") 

Und ich bekomme diese Fehlermeldung: NameError: uninitialized constant RatingsValueForMoneyScore

Ich habe ein paar verschiedene Versionen versucht, wie RatingsValueForMoneyScores.create, Ratings_ValueForMoneyScores.create, ratings_value_for_money_scores.create aber immer wieder die gleichen Fehler. Was mache ich falsch?

+1

müssen Sie tun 'Ratings :: ValueForMoneyScore.create (Ergebnis: '1', Beschreibung:" Schrecklich, definitiv nicht wert, was bezahlt wurde! ")' – sa77

Antwort

0

Die Antworten war eine Kombination von Input, also sammle ich das in einer Antwort.

Meine Namespaces wurden nicht richtig eingerichtet (ich habe "Bewertungen" statt "Bewertung" verwendet), also habe ich dies für die Tabellen behoben. Meine Modelle sah dann wie folgt:

models/rating.rb

class Rating < ApplicationRecord 
end 

Modelle/Rating/value_for_money_score.rb

class Rating::ValueForMoneyScore < ApplicationRecord 
end 

Und dann dieser Befehl arbeitete für die Erstellung von Datensätzen in die rating_value_for_money_score Tabelle

$ Rating::ValueForMoneyScore.create(score: '1', description: "Test") 
0

::ValueForMoneyScore.create(score: '1', description:"Terrible, definitely not worth what was paid!") 
0

versuchen, der Fehler in diesem Fall aussagekräftig genug ist, existiert die Klasse RatingsValueForMoneyScore ziemlich nicht. Überprüfen Sie Ihren Namensraum, Sie haben einen Klassennamen (der Singular sein sollte) Rating, und das Modul ValueForMoneyScore. Sie würden entweder verwenden

(nach der Klasse Rating Umbenennung)

Rating.create(...)

oder

ValueForMoneyScores.create(...)

Ihre Syntax entspricht:

class Rating 
    module ValueForMoneyScores < ApplicationRecord 
    ... 
    end 
end 
+0

Danke. Wenn ich also richtig folge, ist mein Modell jetzt "models/rating/value_for_money_score.rb" (singular) und innerhalb der "rating".rb' Modell Ich habe jetzt die folgenden: 'Klasse Rating \t Modul ValueForMoneyScore Stephen

Verwandte Themen