Capybara - Cucumber:当两个模型在两个不同目录中具有相同名称时出错

时间:2013-12-13 10:20:40

标签: ruby-on-rails ruby ruby-on-rails-4 cucumber capybara

我有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上打开了一个问题,暂时没有回答) 配置:

  • Ruby 2.0
  • Rails 4.0.2
  • Capybara 2.2.0

修改

这似乎不是因为类名而是目录名。如果我改变:

# 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

效果很好......

0 个答案:

没有答案