Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何将模型中的当前用户与用户id进行比较-Rails4_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 如何将模型中的当前用户与用户id进行比较-Rails4

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文件中,
编辑操作
中有一条条件语句。我想从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