如何比较模型中的current_user和user_id - Rails4

时间:2016-05-18 16:01:13

标签: ruby-on-rails-4

可以善意地告诉我 - 会非常感激。在我的users_controller.rb文件中,我在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

非常感谢

1 个答案:

答案 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'