我使用的应用程序使用三个不同的数据库。我想创建一个模型并将其表存储在一个特定的数据库中,该数据库不是默认的 appname_development 数据库。如何告知rails生成器在何处为此模型创建数据库表?
答案 0 :(得分:1)
简而言之:你做不到。您无法告诉模型生成器使用哪个数据库来创建表(开箱即用)。
您需要自己更改生成的迁移,以使用establish_connection定位所需的数据库。类似的东西:
conn = ActiveRecord::Base.establish_connection(:"which_db_#{Rails.env}")
conn.create_table :my_table do |t|
而不是为您生成的create_table
通常调用。
您还需要将establish_connection
电话添加到任何模型。
但是,您可以提供自己的模板来生成迁移和模型,以便为任何生成的模型添加这些行。 generators guide中有更多详细信息,但您应该能够提供文件版本以生成模型和迁移。然后,您必须对rails generate
上传入的变量做出反应,以指定要使用的数据库。可能有点繁琐,但如果你要在不同的地方生成很多模型,可能是值得的。
答案 1 :(得分:0)
您可以使用establish_connection
方法。
class SomeClassInDb1 < ActiveRecord::Base
establish_connection "db_1_#{Rails.env}"
end
class SomeClassInDb2 < ActiveRecord::Base
establish_connection "db_2_#{Rails.env}"
end
并在您的config / database.yml
中development:
# your normal db settings
db_1_development:
# config for db 1 in development env
db_2_development:
# config for db 2 in development env
db_1_test:
# config for db 1 in test env
db_2_test:
# config for db 2 in test env
db_1_production:
# config for db 1 in production env
db_2_production:
# config for db 2 in production env