0

伙计们,我在 ApplicationController 中有一个辅助方法,如下所示

class ApplicationController < ActionController::Base
  helper_method :current_user
end

我想在我的模型(比如项目)中调用它,如下所示:

class Project < ActiveRecord::Base
  after_save :update_other_tables

  private

  def update_other_tables
  # if project saves, Create a new insteance into User Projects
  @userproject=UserProject.new(
   :user_id=>User.current_user.id,
   :project_id=>self.id
  )
  @userproject.save
end

在这里,我得到了类似未定义方法`current_user'的错误 那么,如何在模型中调用这个方法呢?请帮我

4

2 回答 2

1

我会通过以下方式做到这一点:

class ApplicationController < ActionController::Base
  # Assignment method
  def current_user=(user)
    @current_user = user
  end

  # Returns the current user, nil otherwise
  def current_user
    @current_user
  end
end

现在,当用户登录时,您可以设置: current_user = the_user

从那时起,您可以执行以下操作: current_user.id

希望这可以帮助。

于 2012-06-16T13:26:41.447 回答
0

不是一个红宝石人,但我猜这里的用户不是指你的控制器命名空间中存在的用户,这就是为什么对象上没有方法 current_user 。你可能需要将用户对象传递给你的辅助方法或只是通过id..

上述理论来自我在.Net MVC中处理类似问题的经验,所以如果我错了请纠正我,我将删除答案..

PS:评论太长了

于 2012-06-16T10:11:23.443 回答