我正在使用 Rails 4.1 和 PostgreSQL,我正在使用 foreigner gem创建外键约束。但是我在使用 fixtures 时遇到了一些问题.
当我运行时:
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
为开发数据库设置固定装置时,出现某种错误。 .我已经尝试在
test_helper.rb
中更改夹具加载顺序,但这还不够。有人知道怎么修吗?我在网上搜索了很多,但没有找到解决方案。
最佳答案
所以,我确信这有效,尽管我不能说这是一个实际正确的解决方法。
您需要使用户成为 super 用户。
在我使用 Cloud 9 的情况下,我登录的用户是“ubuntu”。
我输入 sudo -u postgres psql (实际上 sudo 两次才能让 C9 正确访问)并输入:
更改用户 ubuntu super 用户;
退出,它会起作用。
如果您运行 tail log/test.rb,您可以在运行集成测试时看到 PG::InsufficientPrivlege: ERROR,因此用户没有足够的权限。你不会想在生产中这样做,但我的生产是在 Heroku 上进行的,所以我很好。
关于ruby-on-rails - 如何在 Rails 中使用具有外键约束的数据库中的测试和装置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25628072/