如何为不同的数据库创建模型?

How to create model for different databases?

我刚开始学习ROR。遇到了这个疑问。
我在 database.yml 文件中定义了多个数据库,如下所示:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: true
  database: mydb1
  username: root
  password: root
  host: localhost

custom:
  adapter: mysql2
  encoding: utf8
  reconnect: true
  database: customdb
  username: root
  password: root
  host: localhost

现在,如果我使用 rails generate model MyModel 创建模型,它将生成迁移以在 mydb1.

中创建 table - my_models

我的问题是"How can I create/specify a model, that to create a table under customdb?"

我需要更改 rails 环境还是有其他方法?我只是好奇。我可以通过在 customdb 中创建一个 table 并创建一个没有迁移的模型来手动完成此操作。

您需要在rails g命令中指定环境,然后它将在customdb数据库

中自动创建一个table
RAILS_ENV=custom rails generate model MyModel

我不明白你为什么要为特定的数据库生成模型。

您所要做的就是生成标准模型并将此行 establish_connection :custom 添加到其中。此模型应与您的自定义数据库一起使用,您可以在添加 establish_connection.

后照常 运行 迁移

我觉得不是环境的问题。

This is my pattern。简而言之,我创建了一个抽象模型,(在 AR 和您的其他数据库模型之间,我在其中指定了这个事实。从它派生的所有模型都指向另一个数据库(public_database 在我的要点中)。连接参数存储在一个额外的 .yml 文件中(config/database_public.yml

运行 多个数据库上的 rake 任务更难,但在要点的第二部分,我找到了一种方法来创建在两个数据库上单独运行的任务。