DataMapper:使用auto_migrate!多对多依赖?

时间:2010-05-20 07:57:00

标签: ruby-on-rails postgresql datamapper ruby-on-rails-3

我正在尝试使用Rails3-pre和最新的DataMapper将我的应用程序从MySql迁移到Postgresql。

我有几个模型通过多对多关系使用:through =>资源,这意味着DataMapper为两个模型创建一个包含外键的连接表。我不能auto_migrate!这些变化,因为我不断得到这个:

ERROR:  cannot drop table users because other objects depend on it
DETAIL:  constraint artist_users_owner_fk on table artist_users depends on table users
constraint site_users_owner_fk on table site_users depends on table users
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

我已经尝试了所有我能想到的东西,并且当我添加时我认为我的工作正常:constraint => :跳到字段定义,但当我尝试运行auto_migrate时,我一直收到该错误。我认为:skip意味着它会忽略dependents,但也许这只适用于删除行而不是删除表?

我应该提一下,我可以在运行db之后运行auto_migrate,但之后会出现错误。

非常感谢任何建议或建议。

编辑:关于datamapper irc的Gibheer建议使用auto_upgrade - 它不会尝试重新创建表。

2 个答案:

答案 0 :(得分:1)

我在导入外部数据和关系方面遇到了类似的问题,有人建议我在开始插入数据之前尝试DataMapper.finalize.auto_migrate!。希望它有所帮助

答案 1 :(得分:0)

我有完全相同的问题,但auto_migrate或auto_upgrade没有解决。

我创建了一个与多个表自动选择的名称同名的模型,然后在不删除表的情况下删除了模型文件,我相信在我进行迁移时会出现问题过程

手动删除交集表后,我可以继续进行所有迁移(向上/向下多次),数据没有问题。