1

我在 Ruby on Rails 应用程序中使用了两个数据库;一个是应用程序的数据库,而第二个是一个独立的数据库,Rails 没有对其进行控制。

问题是当将夹具加载到开发中时,它会尝试在独立数据库中的表上从与开发数据库的连接中运行 DELETE 语句,这显然会出错。

我不希望 Rails 尝试做任何事情,但要读取独立数据库 - 我特别不希望它尝试删除表。

有没有一种简单的方法来告诉 Rails 在加载夹具时忽略第二个数据库的模型?

更新:为了澄清,Rails 似乎认为独立数据库中的表是开发连接的一部分,尽管我已经在模型类中使用establish_connection. 另外需要注意的是,所有模型类都可以从script/console.

4

4 回答 4

2
rake db:fixtures:load RAILS_ENV=testing

将为testing您配置的数据库完成工作database.yml

于 2010-01-28T20:24:41.567 回答
1

删除目录中的 model_name.yml 文件,test/fixturesRails 不会尝试删除这些表。

更好的是,删除所有*.yml文件并完全停止 使用 固定装置

于 2010-01-29T00:17:08.770 回答
1

我认为您也可以通过将独立数据库中的所有表添加到 environment.rb 中的 ActiveRecord::SchemaDumper.ignore_tables 来完成此操作,如下所示:

ActiveRecord::SchemaDumper.ignore_tables = ['independent_db_table1', 'independent_db_table2']
于 2010-04-15T16:23:21.020 回答
0

好的...我的问题是我使用script/generate从辅助数据库创建模型,该数据库还创建了夹具、模式、测试和迁移文件。我删除了架构、测试和迁移文件,但没有删除生成的固定装置(它们是空文件),因为我认为它没有创建任何固定装置。

从辅助数据库中删除所有文件(包括模型)并重新运行 dev db 的迁移后,我添加了辅助数据库中的模型文件和数据库databases.yml,从而解决了问题。

我仍然无法解释为什么 Rails 的 rake 任务在错误的数据库中查找,而且我对 railsschema_migrations在辅助数据库中添加表有点失望,这显然不需要。

但是,它现在有效。

于 2010-01-28T22:57:53.280 回答