使用公寓 gem 时通过 rails 控制台更新记录

Updating a record through the rails console when using the Apartment gem

我正在通过公寓开发多租户应用程序 gem。一切都运行良好,但我对某些事情感到好奇。如何在 rails 控制台中更新给定租户的记录?

例如,如果我执行以下操作,它会按您预期的那样工作(当然没有公寓):

@alerts =  Alert.create(name "blah", date_triggered: "blah", etc..) 

你会如何对待租户?下面的代码不起作用,这不足为奇。我只是不确定您如何在控制台中轻松完成此操作。

 @alerts = tenant01.Alert.create()

警报在租户范围内,因此每个租户都会有自己的警报。如果我使用浏览器添加/修改记录,这是 100% 的工作,我只是不完全确定如何将 sql 转换回 rails 命令并通过控制台进行测试。

如有任何想法或想法,我们将不胜感激。

据我所知,有两种方法可以做到这一点。

  1. 在特定租户内部添加逻辑reference

例如,

Apartment::Tenant.switch('tenant_name') do
  @alerts =  Alert.create(name "blah", date_triggered: "blah", etc..)
end

默认情况下,rails 控制台将从 public 架构中查询。检查 Apartment::Tenant.current 以获取 rails 用于从中查询数据的租户。

代码块执行后,rails 控制台将切换回 public 模式。

  1. 您也可以永久切换到特定租户,

Apartment::Tenant.switch!('tenant_name')

然后,@alerts = Alert.create(name "blah", date_triggered: "blah", etc..)或者随便吧

然后rails控制台会切换到特定的租户,我们要根据需要手动切换租户。