手动将数据添加到rails中的命名空间模型

时间:2016-12-05 14:21:02

标签: ruby-on-rails postgresql namespaces

我正在尝试使用rails控制台手动将数据添加到rails中的表中,但我一直收到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

我尝试过几个不同的版本,比如 RatingsValueForMoneyScores.createRatings_ValueForMoneyScores.createratings_value_for_money_scores.create但仍然遇到同样的错误。我做错了什么?

2 个答案:

答案 0 :(得分:0)

在这种情况下,错误足够描述,类RatingsValueForMoneyScore几乎不存在。检查您的命名空间,您有一个类名(应该是单数)Rating和模块ValueForMoneyScore。你可以使用

(将课程重命名为Rating

之后

Rating.create(...)

ValueForMoneyScores.create(...)

您的语法相当于:

class Rating
  module ValueForMoneyScores < ApplicationRecord
    ...
  end
end

答案 1 :(得分:0)

答案是输入的组合,所以在一个答案中收集。

我的命名空间没有正确设置(我使用“评级”而不是“评级”),所以我修复了表格。我的模型看起来如下:

<强>模型/ 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")