Ruby on rails 4 如何将模型中的当前用户与用户id进行比较-Rails4
请告诉我,我将非常感激。在我的users\u controller.rb文件中,Ruby on rails 4 如何将模型中的当前用户与用户id进行比较-Rails4,ruby-on-rails-4,Ruby On Rails 4,请告诉我,我将非常感激。在我的users\u controller.rb文件中,编辑操作中有一条条件语句。我想从users\u controller.rb文件中的user.rb模型文件调用方法profile\u editing\u rights 用户\u controller.rb def edit if current_user.company == @user.company && current_user.firstname == @user.firstname
编辑操作
中有一条条件语句。我想从users\u controller.rb文件中的user.rb模型文件调用方法profile\u editing\u rights
用户\u 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\u user.company==
@user.company&¤t_user.firstname==@user.firstname
中的
user.rb模型文件,但我不确定如何
我尝试了以下方法,但无效:
def profile_editing_rights
self.company == user_id.company && self.firstname == user_id.firstname
end
请告诉我如何编写profile\u编辑权限
方法(在user.rb文件中),以便我可以在users\u controller.rb文件中调用它
详情如下:
非常感谢
def profile_editing_rights
self.company == user_id.company && self.firstname == user_id.firstname
end
似乎user_id是一个整数,而不是一个对象。
您不能在模型中使用当前用户
您可以将当前_用户值作为参数添加到方法中,但最好检查控制器中的权限。(可能在_之前编写一个筛选器(操作))
此外,您还可以使用一些身份验证程序gem:如Yahor建议的“Pundit”,将其放在before过滤器中。您可以在过滤器内部处理重定向,这也是rails处理重定向的方式。
def profile_editing_rights
self.company == user_id.company && self.firstname == user_id.firstname
end