如何在模型中调用ApplicationController帮助器方法?回报率

时间:2012-06-16 10:06:33

标签: ruby-on-rails-3 model helpermethods applicationcontroller

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

class ApplicationController < ActionController::Base
  helper_method :current_user
end

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

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' 那么,如何在模型中调用此方法?请帮帮我

2 个答案:

答案 0 :(得分: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

希望这有帮助。

答案 1 :(得分:0)

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

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

P.S:评论太长了