看了几个像这样的问题,但还没有找到解决方案。任何帮助非常感谢!
我正在使用Postgres设置Rails 5 API。我有一个应该创建有效用户的基本测试(Minitest):
test "valid user" do
cyclist = User.new(
type: "cyclist",
first_name: "Lyla",
last_name: "Legstrong",
email: "lyla@legstrong.co",
password: "passtest123!",
bio: "I am an avid cyclist with strong, strong legs.",
avg_rating: 8
)
end
运行测试会产生以下错误:
Error:
UserTest#test_valid_user:
ActiveRecord::RecordNotUnique: PG::UniqueViolation:
ERROR: duplicate key value violates unique constraint "users_pkey"
DETAIL: Key (id)=(980190962) already exists.
: INSERT INTO "users" ("type", "first_name", "last_name", "photo",
"email", "password_digest", "bio", "avg_rating", "created_at",
"updated_at", "id") VALUES (NULL, 'MyString', 'MyString', 'MyString',
'MyString', 'MyString', 'MyText', 1, '2017-02-02 19:46:15.655673',
'2017-02-02 19:46:15.655673', 980190962)
我已经尝试了this question的前两个答案中建议的解决方案,但仍然得到完全相同的错误。我也尝试了this - 它打印出setval ----------- 980190967
(我看到的最高值,所以它看起来应该有效)但是当我运行测试时我再次得到同样的错误,同样的重复的pkey(980190962)。
还有一件事:在rails控制台中运行User.create
也会产生相同的错误。如果我连续两次或三次运行它,它会尝试分配序列中的下一个ID(也是后者),然后是下一个(相同的问题),然后下一个ID可用并且它可以工作。
不确定这是否会影响事情,但我正在使用单个表继承设置 - 一个用户超类,它有两个从中继承的子类(即测试中的type: "cyclist"
)。另外,我对此很新,所以请随意提出我可能错过的简单事情......谢谢!