Ruby on rails 规范测试查找表名为'module\u name\u table\u name'`
我已经设置了一个Rails api应用程序,其中有一个用户位于V1名称空间之外。Player代表API的用户。以前,当所有模型都在模块V1中时,一切正常。现在,当我运行测试时,我得到: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:
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