加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

红宝石轨道 – 测试时以特定顺序加载轨道夹具

发布时间:2020-12-16 19:52:31 所属栏目:百科 来源:网络整理
导读:有没有办法在运行测试时以特定的顺序加载Rails灯具?例如,采取以下类… class User ActiveRecord::Base has_many :memberships has_many :groups,through: :membershipsendclass Group ActiveRecord::Base has_many :memberships has_many :users,through: :
有没有办法在运行测试时以特定的顺序加载Rails灯具?例如,采取以下类…
class User < ActiveRecord::Base
  has_many :memberships
  has_many :groups,through: :memberships
end

class Group < ActiveRecord::Base
  has_many :memberships
  has_many :users,through: :memberships
end

class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

成员资格具有数据库级外键约束,要求用户和组在创建之前存在.但是,由于Rails按字母顺序加载了成员资格,因此会在用户之前加载成员资格,并发生错误,表示关系不存在(正确地如此).

ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR:  insert or update on table "memberships" violates foreign key constraint

在运行测试之前加载成员资格有没有办法加载用户和组灯具?

解决方法

您的问题不是Rails运行测试的顺序.我有同样的问题,在调试了几个小时后,意识到ActiveRecord实际上禁用参考完整性插入夹具记录,以防止这些类型的错误Postgresql.

您的测试数据库用户必须在ActiveRecord的测试数据库上具有超级用户权限才能成功地禁用灯具所需的参照完整性.

解决您的问题的方法如下:

>使用您的默认超级用户登录Postgresql(我的是“postgres”)
>执行以下命令:

ALTER ROLE yourtestdbuser WITH SUPERUSER;

享受正确的工作装置.

当一个人使用Postgresql和没有超级用户角色的用户运行测试数据库时,下一个版本的Rails将会有一个警告(我认为是非常需要的).我在a Rails GitHub issue suggesting the warning发现了这个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读