如何使用Milia为多租户在ActionCable中设置租户

时间:2018-03-24 19:25:13

标签: ruby-on-rails multi-tenant actioncable

我在尝试使用Milia设置ActionCable时遇到了问题。我正在关注Chris Oliver的ActionCable Group Chat片段并使用Milia在我的应用程序中进行设置。在互联网上进行了大量搜索后,我的问题似乎与您在使用Apartment gem进行多租户时设置ActionCable时出现的问题类似。但是,我在公寓找到的相关修复似乎并不适用于Milia。

我目前收到以下错误。

  

无法执行命令({“command”=>“subscribe”,“identifier”=>“{\”channel \“:\”ChatroomsChannel \“}”})[NoMethodError - undefined method {{ 1}}订阅'| /usr/local/rvm/gems/ruby-2.4.0/gems/actioncable-5.1.4/lib/action_cable/channel/base.rb:177:in chatrooms' for nil:NilClass]: /home/ubuntu/workspace/rehabrx2/app/channels/chatrooms_channel.rb:4:in阻止在run_callbacks'中| /usr/local/rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/execution_wrapper.rb:81:in block in subscribe_to_channel' | /usr/local/rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/callbacks.rb:108:in块(3级)in'

根据为Apartment gem提供的解决方案,问题似乎来自connection.rb和chatrooms_channel.rb。

wrap' | /usr/local/rvm/gems/ruby-2.4.0/gems/actioncable-5.1.4/lib/action_cable/engine.rb:66:in

我无法弄清楚如何在ActionCable中设置租户。我希望有人已经与Milia一起设置了ActionCable。谁能给我一些建议?

2 个答案:

答案 0 :(得分:0)

为什么不设置您的租户(无论是在子项目中还是在您需要获取数据时)

Tenant.set_current_tenant(tenant)

这使用当前线程但是我不确定它是否在actioncable环境中是100%安全的

答案 1 :(得分:0)

你应该使用

indentifiers :current_user, :tenant

 def connect
  self.tenant = cookies[:tenant]
  Apartment::Tenant.switch!(tenant)
  self.current_user = find_verified_user
end

其实我使用的是公寓宝石

在你的第一行所有方法中你的频道内应该是

Apartment::Tenant.switch!(tenant) // variable tenant is the identifier defined in connection.rb