我有3个型号:
# app/models/category.rb
class Category < ActiveRecord::Base
end
# app/models/reference.rb
class Reference < ActiveRecord::Base
belongs_to :category, class_name: "Category::Reference"
end
# app/models/category/reference.rb
class Category::Reference < ::Category
has_many :references
end
正如您所看到的,两个模型具有相同的名称但目标不同。
当我这样做时,在我的控制器中:
def new
@category = Category::Reference.new
raise @category.inspect
end
它在我的rails服务器中引发:
#<Category::Reference id: nil, title: nil, position: nil, slug: nil, created_at: nil, updated_at: nil>
但是当我用水豚带visit
加注时,同样的提升:
#<Reference id: nil, title: nil, position: nil, description: nil, created_at: nil, updated_at: nil>
你可以看到rails引发了良好的实例Category::Reference
而capybara引发了错误的Reference
我想我需要重命名我继承的模型,但很可惜!
由于
(我已经在github上打开了一个问题,暂时没有回答) 配置:
修改
这似乎不是因为类名而是目录名。如果我改变:
# app/models/category/reference.rb
class Category::Reference < ::Category
has_many :references
end
通过
# app/models/categories/reference.rb
class Categories::Reference < ::Category
has_many :references
end
效果很好......