测试关联时 pry 出现奇怪错误
Bizarre error in pry when testing associations
因此,当我尝试对我添加的关联进行相当简单的交互式测试时,我看到了这个奇怪的错误。这是两个模型:
class Lot < ActiveRecord::Base
has_many :graves
belongs_to :block
end
class Grave < ActiveRecord::Base
belongs_to :lot
end
这是 table 创建迁移:
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 -r ./config/environment.rb
然后在窥探环节我简单的做了:
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 子目录链。我在那里替换了它以保持输出可读。
我在其他 类 上定义了其他几个类似的关联,并且所有这些都按预期工作。
这是 Rails' 变形器的问题。它发生在奇怪的时间,是一个奇怪的 Rails 怪癖。
2.3.1 :004 > a = "Grave"
=> "Grave"
2.3.1 :005 > a.pluralize
=> "Graves"
2.3.1 :006 > a = "graves"
=> "graves"
2.3.1 :007 > a.singularize
=> "grafe"
您可以覆盖经常被忽视的 ./config/inflections.rb 文件中的默认行为:)
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.irregular 'grave', 'graves'
end
修改后
2.3.1 :001 > a = "grave"
=> "grave"
2.3.1 :002 > a.pluralize
=> "graves"
2.3.1 :003 > a = "graves"
=> "graves"
2.3.1 :004 > a.singularize
=> "grave"
因此,当我尝试对我添加的关联进行相当简单的交互式测试时,我看到了这个奇怪的错误。这是两个模型:
class Lot < ActiveRecord::Base
has_many :graves
belongs_to :block
end
class Grave < ActiveRecord::Base
belongs_to :lot
end
这是 table 创建迁移:
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 -r ./config/environment.rb
然后在窥探环节我简单的做了:
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 子目录链。我在那里替换了它以保持输出可读。
我在其他 类 上定义了其他几个类似的关联,并且所有这些都按预期工作。
这是 Rails' 变形器的问题。它发生在奇怪的时间,是一个奇怪的 Rails 怪癖。
2.3.1 :004 > a = "Grave"
=> "Grave"
2.3.1 :005 > a.pluralize
=> "Graves"
2.3.1 :006 > a = "graves"
=> "graves"
2.3.1 :007 > a.singularize
=> "grafe"
您可以覆盖经常被忽视的 ./config/inflections.rb 文件中的默认行为:)
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.irregular 'grave', 'graves'
end
修改后
2.3.1 :001 > a = "grave"
=> "grave"
2.3.1 :002 > a.pluralize
=> "graves"
2.3.1 :003 > a = "graves"
=> "graves"
2.3.1 :004 > a.singularize
=> "grave"