Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 如何记录创建操作?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何记录创建操作?

Ruby on rails 如何记录创建操作?,ruby-on-rails,Ruby On Rails,我正在尝试在我的RoR应用程序上创建一个日志记录功能,该功能记录用户在模型中给定控制器上执行的所有操作。我尝试用过滤器实现它,但他们没有解决我的问题,因为他们不允许我正确地记录“创建”操作 “创建”操作很棘手,因为当调用before/after过滤器时,该操作尚未保存,因此,我没有相应的模型id(我需要) 我知道我可以使用“after_commit”,但这将大大增加日志功能的复杂性,因为保存在每个日志条目中的“参数”将向控制器公开,而不是向模型公开 有没有一种方法可以动态地向ActiveReco

我正在尝试在我的RoR应用程序上创建一个日志记录功能,该功能记录用户在模型中给定控制器上执行的所有操作。我尝试用过滤器实现它,但他们没有解决我的问题,因为他们不允许我正确地记录“创建”操作

“创建”操作很棘手,因为当调用before/after过滤器时,该操作尚未保存,因此,我没有相应的模型id(我需要)

我知道我可以使用“after_commit”,但这将大大增加日志功能的复杂性,因为保存在每个日志条目中的“参数”将向控制器公开,而不是向模型公开


有没有一种方法可以动态地向ActiveRecord的实例添加“after_commit”筛选器?

阅读此内容,我认为这是一个很好的解决方案:

阅读此内容,我认为这是一个很好的解决方案:

这是我记录的方式,我有一个用户控制器创建这样的操作:

def create
    @user = User.new(params[:user])
    if @user.save
        flash[:notice] = "Welcome, #{@user.username}"
        redirect_to(:controller => "users", :action => "home")
        session[:id] = @user.id
    else
        render("home")
    end
end
现在我想记录创建了一个用户,然后我这样做:
首先在User.rb(model)中创建AuditLogger类:

您还需要在日志目录中创建一个名为my_log.log的文件。希望它能够记录。我知道这不是最好的解决方案,我有更好的方法,但当时我急需一些工作,所以我坚持了下来。

签出这些链接:


这是我的日志记录方式,我有一个用户控制器创建如下操作:

def create
    @user = User.new(params[:user])
    if @user.save
        flash[:notice] = "Welcome, #{@user.username}"
        redirect_to(:controller => "users", :action => "home")
        session[:id] = @user.id
    else
        render("home")
    end
end
现在我想记录创建了一个用户,然后我这样做:
首先在User.rb(model)中创建AuditLogger类:

您还需要在日志目录中创建一个名为my_log.log的文件。希望它能够记录。我知道这不是最好的解决方案,我有更好的方法,但当时我急需一些工作,所以我坚持了下来。

签出这些链接:

def create
    @user = User.new(params[:user])
    if @user.save
        logfile = File.open("#{Rails.root}/log/my_log.log", 'a')    
        audit_log = AuditLogger.new(logfile)
        audit_log.info "#{@user.firstname} was created successfully"
        redirect_to(:controller => "users", :action => "home")
    else
        render("home")
    end
end