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

时间:2015-03-17 07:26:03

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 rails-migrations

我刚开始学习ROR。并遇到了这个DOUBT 我在 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创建模型,它将生成迁移以创建表格my_models中的mydb1

我的问题是“如何创建/指定模型,在customdb下创建表?”

我是否需要更改导轨环境或有其他方法吗?我只是好奇。我可以通过在customdb中创建表并在不迁移的情况下创建模型来手动执行此操作。

3 个答案:

答案 0 :(得分:2)

您需要在rails g命令中指定环境,然后它将在customdb数据库中自动创建一个表

RAILS_ENV=custom rails generate model MyModel

答案 1 :(得分:0)

我无法理解您为什么要为特定数据库生成模型。

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

答案 2 :(得分:0)

我认为这不是环境问题。

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

在多个数据库上运行rake任务比较困难,但在要点的第二部分,我找到了一种创建任务的方法,这些任务可以在两个数据库上分别运行。