Rails - 模型中可用的控制器中的辅助方法?

时间:2015-08-14 15:25:25

标签: ruby-on-rails

application_controller中有一个辅助方法:

  def current_user
      @current_user ||= User.find(session[:user_id])
      return @current_user
  end

我想在模型中设置before_save回调 - 以便在更新activerecord时保存current_user.id

基本上,无论何时更改,修改和保存模型,我都要确保为该模型填充updated_by列/

但我不确定如何访问模型中的当前用户?

有人可以提供建议吗?

2 个答案:

答案 0 :(得分:0)

不可能,current_user仅在控制器中可用。您应该在方法中传递current_user id,例如:

在控制器方法中:

def action
  method_with_user_id(current_user.id)
end

在模型类定义中:

def method_with_user_id(user_id)
  #things with the user id
end

答案 1 :(得分:0)

你可以这样做来访问模型

中控制器中声明的实例变量
class User < ActiveRecord::Base
  cattr_accessor :current_user
end 

 class ApplicationController < ActionController::Base
      before_filter :current_user

      def current_user
        @current_user ||= User.find(session[:user_id])
        User.current_user = @current_user
    end
  end
end