【问题标题】:Multi-tenancy Rails Appartment generic elevator多租户 Rails Appartment 通用电梯
【发布时间】:2017-03-23 05:26:49
【问题描述】:

我在 Rails 4 应用程序中使用 Apartment work。

我遵循了这一步:

1)

#config/initializer/apartement.rb
require 'apartment/elevators/generic'

2)

#config/initializer/application.rb
config.middleware.use 'Apartment::Elevators::Generic', Proc.new {|request|

  remember_token = request.cookies['remember_token']
  if remember_token.blank?
    nil
  else
    User.find_by(remember_token: remember_token).backoffice_company_id
  end
}

这很好用,但效率不高,因为应用程序上的每个请求都会在数据库上完成一个请求。

如果 remember_token 与上一个请求相比没有变化(因为它是同一个用户),我怎样才能避免这种数据库访问?

我尝试将其存储在会话变量中,但当 2 个用户使用该应用程序时,它似乎是全局 à 这个级别 (application.rb)。

谢谢

布鲁诺

【问题讨论】:

  • 只是好奇你有没有找到一种方法来提高效率?我正在尝试做这样的事情,我什至不能让它像你做的那样工作。谢谢。
  • 不,我们没有找到更好的解决方案来避免这些请求。我们仍在寻找任何想法......

标签: ruby-on-rails multi-tenant


【解决方案1】:

今天遇到了类似的设置,用于主域上的特定子域路由,但其他域上的域级路由。深入研究公寓附带的代码,他们使用tenant.presence,而不是以返回 if/else 结束。检查存在 (http://api.rubyonrails.org/classes/Object.html#method-i-presence) 本质上会在检查时提供 ||= 内联。

见:What is the point of object.presence?

【讨论】:

    猜你喜欢
    • 2014-09-14
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多