edit action
中有一个条件语句。我想从users_controller.rb文件中的user.rb模型文件中调用方法profile_editing_rights
users_controller.rb
def edit
if current_user.company == @user.company && current_user.firstname == @user.firstname
# can edit only their profile
else
redirect_to access_restricted_path
end
end
我想写一行代码
current_user.company == @user.company && current_user.firstname == @user.firstname
user.rb模型文件,但我不确定如何
我试过以下但不起作用:
def profile_editing_rights
self.company == user_id.company && self.firstname == user_id.firstname
end
有人可以建议我如何写
profile_editing_rights
方法(在user.rb文件中)正确,所以我可以在users_controller.rb文件中调用它 如下:
def edit
if current_user.profile_editing_rights
# can edit only their profile
else
redirect_to access_restricted_path
end
end
非常感谢
答案 0 :(得分:1)
def profile_editing_rights
self.company == user_id.company && self.firstname == user_id.firstname
end
似乎user_id是一个整数而不是一个对象。 您不能在模型中使用current_user。
您可以将current_user值作为参数添加到您的方法中,但最好检查控制器中的权限。(也许写一个before_filter(action))
你也可以使用一些auth checker gem:例如'Pundit'