Ruby on rails 为每个用户更改数据库

Ruby on rails 为每个用户更改数据库,ruby-on-rails,Ruby On Rails,我正在开发一个多公司网站,每个公司都有自己的数据库,当用户登录时,数据库将根据每个用户将拥有的company.id字段进行更改。问题是,当公司X的一个用户登录,然后登录公司Y的另一个用户时,它会更改影响所有登录用户的数据库,每次更改时,所有用户的数据库都会更改,而不是只更改登录用户的数据库 这是我更改数据库的代码: def set_database if user_signed_in? company = (current_user.company_id).to_s.to_sy

我正在开发一个多公司网站,每个公司都有自己的数据库,当用户登录时,数据库将根据每个用户将拥有的company.id字段进行更改。问题是,当公司X的一个用户登录,然后登录公司Y的另一个用户时,它会更改影响所有登录用户的数据库,每次更改时,所有用户的数据库都会更改,而不是只更改登录用户的数据库 这是我更改数据库的代码:

def set_database
   if user_signed_in?
      company = (current_user.company_id).to_s.to_sym 
      ActiveRecord::Base.establish_connection(company)
    else
      ActiveRecord::Base.establish_connection(:'232')
    end
 end
变量company将获取用户company_id的值,并将与该公司的数据库建立连接,例如company的值为32,然后将在database.yml中与以下内容建立连接:

'32':
  adapter: sqlserver
  mode: dblib
  dataserver:
  host: host
  port: 1433
  database: database
  username: user
  password: pass
  timeout: 60000
  azure: true

如何在不影响其他拥有不同数据库的用户的情况下登录每个用户?

根据您对rails的了解判断,您可能不希望在应用程序中的这一点上按数据库滚动自己的多租户。这种情况可能会变得非常大和毛茸茸的,在你达到足够大的规模之前不需要发生。此外,创建和拆除数据库连接也会产生成本,这对于每个请求来说都是非常昂贵的

相反,我建议使用一种有以下几种方法:


或者作为一种替代方法。

不确定这是否是一个好的解决方案,但可能会将用户数据库信息存储在会话中,然后引用它进行查询?感谢您的回答,此gem允许我为每个用户更改数据库?