Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Can';Rails引擎添加的ActionController方法内部的t访问模型_Ruby On Rails_Ruby_Rubygems_Rails Engines - Fatal编程技术网

Ruby on rails Can';Rails引擎添加的ActionController方法内部的t访问模型

Ruby on rails Can';Rails引擎添加的ActionController方法内部的t访问模型,ruby-on-rails,ruby,rubygems,rails-engines,Ruby On Rails,Ruby,Rubygems,Rails Engines,我正在开发一个打包为gem的Rails引擎。在我的引擎的主模块文件中,我有: module Auditor require 'engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3 require 'application_controller' end module ActionController module Auditor def self.included(base) base.

我正在开发一个打包为gem的Rails引擎。在我的引擎的主模块文件中,我有:

module Auditor
  require 'engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3
  require 'application_controller'
end

module ActionController
  module Auditor
    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods
      def is_audited
        include ActionController::Auditor::InstanceMethods
        before_filter :audit_request
      end   
    end 

    module InstanceMethods
      def audit_request
        a = AuditorLog.new
        a.save! 
      end   
    end 
  end
end

ActionController::Base.send(:include, ActionController::Auditor)
其中,AuditorLog是引擎提供的模型。(我的目的是将“is_audited”添加到使用此引擎的应用程序中的控制器中,这将导致对请求的详细信息进行审核日志记录。)

我遇到的问题是,当从正在使用引擎的应用程序调用此代码时,无法访问AuditorLog模型。看起来Ruby认为它应该是ActionController中的一个类:

NameError(未初始化的常量 ActionController::Auditor::InstanceMethods::AuditorLog)

而不是我引擎里的模型


谁能给我指出正确的方向吗?这是我第一次创建引擎并尝试将其打包为gem;我已经寻找过这样的例子,但运气不太好。我将此功能添加到ActionController类的方法是基于mobile_fu所做的,因此请让我知道我是否完全错了。

使用::AuditorLog访问ActiveRecord类(除非您在模块或命名空间中拥有它,在这种情况下,您需要包括模块名称).

哪里定义了
AuditorLog
?当您执行以下操作时,它是否工作:AuditorLog?很好,很简单。谢谢你,杰里米!