我正在使用带有单个“帐户”表的STI模型来保存用户和技术人员的信息(即用户<帐户,技术员&帐户)。一切都从功能的角度来看,但是在运行单元测试时会出现问题:
... 8)错误: test_the_truth(UserTest): ActiveRecord :: StatementInvalid:PGError:错误:关系“技术人员”不存在 :删除“技术人员” ...
基本上,标准框架不承认技术人员和用户表(或PostgreSQL称之为“关系”)不存在,实际上应该为帐户别名。
有什么想法吗?我对RoR比较陌生,我不知道怎么解决这个问题而不是一起扯掉STI。
答案 0 :(得分:12)
原来问题是由于存在:
./测试/装置/ technicians.yml ./test/fixtures/users.yml
这是有道理的,因为框架期望能够将数据插入到类似命名的表中。
答案 1 :(得分:2)
通过删除子模型的YAML文件,我遇到了类似的问题。基本上rails正在查看在/ test / fixtures /中创建的fixture,并尝试清空每个表,以便它可以为您重新加载它们。
在我的情况下,我运行了脚本/生成模型命令,该命令自动创建一个新的夹具。然后我将模型更改为从正确的父类继承。好吧,由于夹具仍然存在,rails在加载灯具之前试图从孩子那里删除。
如果您确实需要预加载数据,则应使用父模型夹具并将类型字段设置为正确的型号名称。
答案 2 :(得分:0)