2016-12-05 8 views
0

レールコンソールを使用してレール内のテーブルにデータを手動で追加しようとしていますが、エラーが発生しています(undefined local variable or method)。レールで名前空間モデルにデータを手動で追加する

モデルはratingsの下に名前空間されています

モデル/評価/ value_for_money_score.rb

class Ratings::ValueForMoneyScore < ApplicationRecord 
end 

試してみて、手動でデータベースにレコードを追加するには、私は、コンソールで次のコマンドを実行します。

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

そして、私はこのエラーを取得する:NameError: uninitialized constant RatingsValueForMoneyScore

私はratings_value_for_money_scores.create 、このよう RatingsValueForMoneyScores.createRatings_ValueForMoneyScores.createなど、いくつかの異なるバージョンを試してみましたが、同じエラーを取得維持しています。私は間違って何をしていますか?

+1

あなたは 'Ratings :: ValueForMoneyScore.create(スコア: '1'、説明:"何が支払われたのか分かりません! ")と答える必要があります。 – sa77

答えて

0

:あなたはあなたの構文は同等です(Ratingにクラスの名前を変更した後)

Rating.create(...)

または

ValueForMoneyScores.create(...)

のいずれかを使用したいです答え入力の組み合わせだったので、1つの答えでそれを収集する。

私の名前空間は正しく設定されていませんでした(私は "Ratings"ではなく "Ratings"を使用していました)。次のように私のモデルは、その後に見えた:

モデル/ rating.rb

class Rating < ApplicationRecord 
end 

モデル/評価/ value_for_money_score.rb

class Rating::ValueForMoneyScore < ApplicationRecord 
end 

をしてから、このコマンドは、レコードを作成するために働いていましたrating_value_for_money_scoreテーブル

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

は、エラーが、この場合には、かなり多くのクラスRatingsValueForMoneyScoreが存在しない十分な記述である

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

を試してみてください。ネームスペースを確認し、クラス名(単数である必要があります)RatingとモジュールValueForMoneyScoreを持っています。

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

ありがとうございました。だから私が正しく従っているなら、私のモデルは 'モデル/評価/値_for_money_score.rb '(単数)であり、'評価内です。'クラスの評価 \tモジュールValueForMoneyScore私は今、' $ ValueForMoneyScore.create(スコア実行してみました Stephen

関連する問題