Ruby on rails 在控制台上输入后如何选择特定租户?

Ruby on rails 在控制台上输入后如何选择特定租户?,ruby-on-rails,multi-tenant,apartment-gem,Ruby On Rails,Multi Tenant,Apartment Gem,下面的代码存储在config/initializers/console.rb中,仅在我第一次执行rails控制台时有效。退出并再次输入时,不会显示选择消息,但会加载所选的预览租户 if defined?(Rails::Console) || $PROGRAM_NAME.include?('spring') tenants = Apartment.tenant_names.sort default = tenants.first puts "Available tenants: #{

下面的代码存储在
config/initializers/console.rb
中,仅在我第一次执行rails控制台时有效。退出并再次输入时,不会显示选择消息,但会加载所选的预览租户

if defined?(Rails::Console) || $PROGRAM_NAME.include?('spring')
  tenants = Apartment.tenant_names.sort
  default = tenants.first

  puts "Available tenants: #{tenants.join(', ')}"

  print "Select tenant (#{default}): "
  tenant = gets.strip

  Apartment::Tenant.switch! tenants.include?(tenant) ? tenant : default
end
我希望每次进入
rails控制台时
都能询问将加载哪些租户


谢谢

这是因为Spring,默认情况下,它只针对开发环境进行配置。只要将它从GEM文件中删除,它就会像您期望的那样工作。

我也遇到了类似的问题。如果你正在使用公寓宝石。在rails控制台中,您可以通过先连接到DB,然后使用
schema\u search\u path来在租户之间切换

e.g.
c = Company.connection
c.schema_search_path = "tenant1"
要检查租户是否已切换,请使用
ActiveRecord::Base.connection.schema\u search\u path

e.g.
c = Company.connection
c.schema_search_path = "tenant1"
=>“\“租户1”


公司只是我数据库中的一张表。

我获得公寓的唯一途径::Tenant.switch!要在Rails控制台中工作,需要在项目的根目录中创建以下.irbrc文件:

IRB.conf[:IRB_RC] = Proc.new do
  tenants = Apartment.tenant_names.sort
  puts "Available tenants: #{tenants.join(', ')}"

  print "Select tenant: "
  tenant = gets.strip

  unless tenant.empty?
    if tenants.include?(tenant)
      Apartment::Tenant.switch!(tenant)
    else
      puts "Tenant not found in list '#{tenant}'"
    end
  end
  puts "Tenant set to '#{Apartment::Tenant.current}'"
end
下面是一个简单的代码(
pry
version),可在
launch
console


这对我来说很有效。导轨版本?检查此项是否有
pry
version