如何在Rails中使用带有外键约束的数据库中的测试和固定装置



我正在使用Rails 4.1和PostgreSQL,并且我正在使用foreigner gem来创建外键约束。但我在固定装置方面遇到了一些问题。

当我运行时:

spring rake test

我得到了如下错误:

ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR:  update or delete on table "pessoas" violates foreign key constraint "pacientes_pessoa_id_fk" on table "pacientes"
DETAIL:  Key (id)=(980190962) is still referenced from table "pacientes".
: DELETE FROM "pessoas"

我找到了一个变通办法:重新创建数据库:

RAILS_ENV=test spring rake db:reset && spring rake test

当我尝试使用rake db:fixture:load为开发数据库植入fixture时,我会遇到一些错误。

我已经尝试更改test_helper.rb中的夹具装载顺序,但这还不够。

有人知道怎么修吗?我在网上搜索了很多,都没有找到解决方案。

所以,我确信这是有效的,尽管我不能说这是一个真正正确的解决方案。

您需要使用户成为超级用户。

在我使用Cloud 9的情况下,我登录的用户是"ubuntu"。

我输入sudo-u postgres psql(实际上是两次sudo,以便C9正确访问)并键入:

ALTER USER ubuntu SUPERUSER;

退出,它会起作用的。

如果运行tail-log/test.rb,则在运行集成测试时会看到PG::InsufficientPrivlege:ERROR,因此用户没有足够的权限。你可能不想在制作中这样做,但我的制作是在Heroku上,所以我很好。

相关内容

  • 没有找到相关文章

最新更新