Rails测试数据库中的非标准主键

时间:2010-12-16 00:06:04

标签: ruby-on-rails

在我的一个模型中,我使用非标准主数据库,在迁移文件中处理如下:

create_table item_similarities, :id => false do |t|

execute "ALTER TABLE item_similarities ADD constraint pk_item_similarities " +
        "PRIMARY KEY (item_id_1, item_id_2)"

现在,当我运行rake test时,架构将被复制到测试数据库中,但不会在测试数据库中设置主键(item_id_1,item_id_2)。

有人可以帮助我们如何实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

Rails对复合主键没有太多支持。

尝试像这样转储数据库的sql结构:

rake db:structure:dump

它应该创建一个像db / development_structure.sql

这样的文件

然后执行此操作将该文件加载到测试数据库中:

rake db:test:clone_structure

答案 1 :(得分:0)

Rails将其架构信息转储到db / schema.rb中。检查该文件,但您自己的SQL可能不会存在。您可以将其设置为dump sql,但我不知道是否包含您自己的SQL:

ActiveRecord::Base.schema_format = :sql