伙计我在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' 那么,如何在模型中调用此方法?请帮帮我
答案 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:评论太长了