我正在使用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上,所以我很好。