在控制器的create方法中,我有:
if logged_in_admin?
@invitation.set_ids
在邀请模型中:
def set_ids
self.person_one_id = current_user.id
end
current_user
是app / helpers / sessions_helper.rb中的一个方法,用于定义当前登录的用户。我在许多控制器方法中成功使用此方法。但是,对于上面的用例,我收到错误消息undefined local variable or method 'current_user' for #<Invitation:0x007f699086bf40>
。
为什么会收到此错误消息?这是因为这次我在模型文件中使用了helper方法,这是不允许的?如果不允许这样做,那么为person_one_id
安全设置@invitation
等于当前登录用户的ID的最佳方法是什么?
答案 0 :(得分:3)
current_user
在模型图层中不可用(MVC
,CV
图层上的助手和模型对current_user
助手一无所知。从你的助手传递user_id
作为参数:
some_helper.rb
def my_helper
if logged_in_admin?
@invitation.set_ids(current_user.id)
# .....
model.rb
:
def set_ids(user_id)
self.person_one_id = user_id
end
答案 1 :(得分:0)
您必须将以下行添加到ApplicationController:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
include SessionsHelper
end
现在您应该能够使用控制器/模型中的方法。