【发布时间】:2016-07-31 14:58:53
【问题描述】:
所以当我尝试对我添加的关联进行相当简单的交互式测试时,我看到了这个奇怪的错误。以下是两种型号:
class Lot < ActiveRecord::Base
has_many :graves
belongs_to :block
end
class Grave < ActiveRecord::Base
belongs_to :lot
end
以下是表创建迁移:
class CreateGraves < ActiveRecord::Migration
def change
create_table :graves do |t|
t.integer :grave_number
t.integer :lot_id
t.timestamps null: false
end
end
end
class CreateLots < ActiveRecord::Migration
def change
create_table :lots do |t|
t.integer :lot_number
t.integer :map_type
t.timestamps null: false
end
end
end
我正在调用 pry:
pry -r ./config/environment.rb
然后在 pry session 中我只是这样做:
lot = Lot.new
l.graves
我得到这个错误:
NameError: uninitialized constant Lot::Grafe
from /.../activerecord-4.2.6/lib/active_record/inheritance.rb:158:in `compute_type'
...这里只是我的 rbenv 安装路径和 ruby 2.3.0 子目录链。我在那里替换了它以保持输出的可读性。
我在其他类上定义了其他几个类似的关联,所有这些关联都按预期工作。
【问题讨论】:
-
将类名从
Grave更改为Gravesite解决了这个问题。我不知道系统中的什么 gem 干扰了 Grave 类名,但无论它是一个巨大的、嘈杂的 WTF。
标签: ruby-on-rails rails-activerecord model-associations ruby-on-rails-4.2