ruby-on-rails - 如何在 Rails 中使用具有外键约束的数据库中的测试和装置?

标签 ruby-on-rails foreign-keys fixtures minitest foreigner

我正在使用 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/

相关文章:

ruby-on-rails - to_json 方法中的 Rails "wrong number of arguments (1 for 0)"

MySQL索引名称和外键名称必须针对不同的表不同吗?

python - 基于跨关系的查找将选择限制为外键

ruby-on-rails - 自定义或覆盖 ActiveAdmin 编辑/更新 Action Controller

ruby-on-rails - Notepad++ 突出显示 html.erb 文件中 <%= 之后的所有内容

ruby-on-rails - 包含可选参数的方法的 RSpec 参数匹配器

database - 如何自动检测和删除 Postgresql 中重复的外键约束

grails - 在Grails控制台中加载和使用 fixture

ruby-on-rails - 如何从引擎加载 fixture ?

java - JUnit 与 Rails Fixtures 并行吗?