我已经设置了一个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
Player
工厂:
FactoryGirl.define do
factory :player, class: V1::Player do
user_id 5
end
end
感谢。
答案 0 :(得分:0)
根据ActiveRecord文档,我认为这是预期的行为。我已经在表上运行迁移以遵守。我还了解到,您可以使用参数module_name :: class_name运行rails生成器,而不仅仅是类名。