我在application_controller.rb
中有以下帮助方法:
class ApplicationController < ActionController::Base
def current_tenant
@current_tenant ||= Tenant.find_by(domain: Apartment::Tenant.current)
end
helper_method :current_tenant
end
租户表还存储了我想在环境配置中使用的一些信息(这是development.rb
):
Rails.application.configure do
config.paperclip_defaults = {
:s3_credentials => {
:bucket => current_tenant.amazon_s3_bucket,
:access_key_id => current_tenant.amazon_s3_id,
:secret_access_key => current_tenant.amazon_s3_secret
}
}
end
这给了我这个错误:
NameError: undefined local variable or method 'current_tenant'
是否可以定义可在视图和环境配置中使用的方法?
答案 0 :(得分:0)
它无法正常工作 - 您无法在其他部分使用控制器中定义的辅助方法,例如模型或(在本例中)配置。更重要的是,development.rb
中的代码在应用程序启动时执行一次。但是你想要在每个请求上执行current_tenant
。
BTW定义辅助方法作为ApplicationController
的公共方法不是非常安全的做法,因为这种方法也成为一种行动。
答案 1 :(得分:0)
你不能,在这种情况下它根本没有意义。回形针默认设计为与请求无关的全局配置默认值。
在您的情况下,您必须保留默认值为空,并确保根据用户将控制器的正确配置传递给回形针实例。 This is described in the documentation