【问题标题】:Updating a record through the rails console when using the Apartment gem使用 Apartment gem 时通过 rails 控制台更新记录
【发布时间】:2020-02-12 16:22:59
【问题描述】:

我正在通过 Apartment gem 开发一个多租户应用程序。一切都很完美,但我对某些事情感到好奇。如何在 Rails 控制台中更新给定租户的记录?

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

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

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

 @alerts = tenant01.Alert.create()

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

任何想法或想法将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby rails-console apartment-gem


    【解决方案1】:

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

    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 控制台将切换回公共模式。

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

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

    那么,@alerts = Alert.create(name "blah", date_triggered: "blah", etc..) 或者做任何事。

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

    【讨论】:

    • 有趣,让我试一试。在阅读了公寓文档后,我倾向于对此进行测试,但不确定是否有其他方法可以做到这一点。
    • 接受这个作为答案,这样这个答案也可能对其他人有帮助:)。
    猜你喜欢
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多