Ruby on rails 规范测试查找表名为'module\u name\u table\u name'`

Ruby on rails 规范测试查找表名为'module\u name\u table\u name'`,ruby-on-rails,rspec,Ruby On Rails,Rspec,我已经设置了一个Rails api应用程序,其中有一个用户位于V1名称空间之外。Player代表API的用户。以前,当所有模型都在模块V1中时,一切正常。现在,当我运行测试时,我得到: V1::PlayersController GET players returns all players Failure/Error: FactoryGirl.create :player, user_id: 1 ActiveRecord::StatementInvalid:

我已经设置了一个Rails api应用程序,其中有一个用户位于V1名称空间之外。Player代表API的用户。以前,当所有模型都在模块V1中时,一切正常。现在,当我运行测试时,我得到:

    V1::PlayersController GET players returns all players
     Failure/Error: FactoryGirl.create :player, user_id: 1
     ActiveRecord::StatementInvalid:
       Could not find table 'v1_players'
这是常见的错误吗?我唯一能想到的是我在迁移中犯了一个错误。它们是标准的,没有提到v1,所以我无法想象为什么ActiveRecord会期待这个名字

以下是规范,以防有所帮助:

describe V1::PlayersController, :type => :controller do 

    describe "GET players" do
        it "returns all players" do 
            FactoryGirl.create :player, user_id: 1
            FactoryGirl.create :player, user_id: 2

            get :index, :format => :json

            expect(response.status).to eq 200

            body = JSON.parse(response.body)
            player_user_ids = body.map { |m| m["user_id"] }

            expect(player_user_ids).to match_array(["1",
                                               "2"])
        end
    end
end
和播放器工厂:


谢谢。

根据ActiveRecord文档,我认为这是预期的行为。我已在表上运行迁移以符合要求。我还了解到,可以使用参数module_name::class_name而不仅仅是类名来运行rails生成器

FactoryGirl.define do
  factory :player, class: V1::Player do
    user_id 5
  end
end