我在我的应用程序中设计了gem。我一直在制作一些表等。现在,我想为管理员分离数据库,为用户分离数据库。我知道它只有一个数据库。但是,我不确定如何在Rails中使用它。
答案 0 :(得分:2)
您可以在 database.yml 文件
中配置多个数据库production:
primary:
database: my_primary_database
user: root
adapter: mysql
secondary:
database: my_secondary_database
user: secondary_root
adapter: mysql
migrations_paths: db/secondary_migrate
然后在您的模式中,您可以提及要使用的数据库
class AnimalsBase < ApplicationRecord
self.abstract_class = true
connects_to database: { writing: :secondary }
end
查看此链接以获取更多详细信息https://edgeguides.rubyonrails.org/active_record_multiple_databases.html
**对于4.2-5导轨,您可以使用此宝石Multiverse
P.S:Rails 6为此提供了更简洁的解决方案,现已提供稳定的Rails 6构建,您也可以升级到较新版本。
答案 1 :(得分:0)
在主要连接单个数据库方面,Rails有一些限制。因此,我曾经使用database.yml
中的配置设置来切换数据库,在那里您将拥有development
和admin_development
,(test
和production
等)
您可以获得以下常量,
ADMINCONFIG = YAML.load_file("#{Rails.root}/config/database.yml")['admin_development']
DEVCONFIG = YAML.load_file("#{Rails.root}/config/database.yml")['development']
以后,只要需要,您就可以根据需要(通过控制器)从一个切换到另一个,
ActiveRecord::Base.connection(ADMINCONFIG)