如何在Rails中分离Admin和User数据库

时间:2019-07-12 06:09:51

标签: ruby-on-rails

我在我的应用程序中设计了gem。我一直在制作一些表等。现在,我想为管理员分离数据库,为用户分离数据库。我知道它只有一个数据库。但是,我不确定如何在Rails中使用它。

2 个答案:

答案 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中的配置设置来切换数据库,在那里您将拥有developmentadmin_development,(testproduction等)

您可以获得以下常量,

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)