Rails活动记录名称错误

时间:2013-08-20 17:41:00

标签: ruby-on-rails activerecord

我遇到以下错误:

NameError at 
uninitialized constant XController::Sheep

在这一行

server = Sheep.find_by_id(id)

这是我的设置:

models/sheep.rb

class Sheep < ActiveRecord::Base
  has_many :kids
end

models/kid.rb

class Kid < ActiveRecord::Base
  belongs_to :sheep # I tried adding , :class_name => 'Sheep' didn't do anything
end

config/initializers/inflections.rb

ActiveSupport::Inflector.inflections(:en) do |inflect|
    inflect.uncountable 'sheep'
end

表名实际上是sheep我检查了

我还应该检查什么?

编辑: 在控制器controllers/farm.rb中,我打了两个电话:

@kid = Kid.find_by_id params[:id]
@sheep = Sheep.find_by_id(id) # works only when adding :: as in the answer

1 个答案:

答案 0 :(得分:1)

您可以尝试使用双冒号访问此模型的名称:

server = Sheep.find_by_id(id)
# become
server = ::Sheep.find_by_id(id)
         ^^

然后它应该工作。

我还没有足够的信息来说明为什么没有冒号就行不通,但我的直觉告诉我XController::Sheep表示你的控制器名称有问题。