如何在环境配置中使用helper方法?

时间:2015-06-18 11:13:58

标签: ruby-on-rails ruby paperclip

我在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'

是否可以定义可在视图环境配置中使用的方法?

2 个答案:

答案 0 :(得分:0)

它无法正常工作 - 您无法在其他部分使用控制器中定义的辅助方法,例如模型或(在本例中)配置。更重要的是,development.rb中的代码在应用程序启动时执行一次。但是你想要在每个请求上执行current_tenant

BTW定义辅助方法作为ApplicationController的公共方法不是非常安全的做法,因为这种方法也成为一种行动。

答案 1 :(得分:0)

你不能,在这种情况下它根本没有意义。回形针默认设计为与请求无关的全局配置默认值。

在您的情况下,您必须保留默认值为空,并确保根据用户将控制器的正确配置传递给回形针实例。 This is described in the documentation