Ruby on rails 干我:Rails代码
我怎样才能擦干这个Ruby on rails 干我:Rails代码,ruby-on-rails,ruby-on-rails-3,dry,Ruby On Rails,Ruby On Rails 3,Dry,我怎样才能擦干这个 def correct_user @company = RealEstateCompany.find(params[:id]) if(current_user != @company.user) redirect_to(root_path) end end def correct_user @company = ConstructionCompany.find(params[:id]) if(current_user != @
def correct_user
@company = RealEstateCompany.find(params[:id])
if(current_user != @company.user)
redirect_to(root_path)
end
end
def correct_user
@company = ConstructionCompany.find(params[:id])
if(current_user != @company.user)
redirect_to(root_path)
end
end
答案如下,在模块中如下所示:
def correct_user_for_controller?(controller_name)
@company = controller_name.classify.constantize.find(params[:id])
redirect_to(root_path) unless (current_user == @company.user)
end
然后在任何控制器中包括模型和使用
correct_user_for_controller?("ConstructionCompany")
correct_user_for_controller?("RealEstateCompany")
假设您希望在
施工公司控制器
和房地产公司控制器
中使用此设施:
def correct_user
@company = controller_name.classify.constantize.find(params[:id])
redirect_to(root_path) unless (current_user == @company.user)
end
假设您希望在
施工公司控制器
和房地产公司控制器
中使用此设施:
def correct_user
@company = controller_name.classify.constantize.find(params[:id])
redirect_to(root_path) unless (current_user == @company.user)
end
只需将此模块包含在两个模型中并执行模型级检查。
您也可以为控制器创建一个模块,但我强烈建议不要这样做(损害可维护性)
只需将此模块包含在两个模型中并执行模型级检查。
您也可以为控制器创建一个模块,但我强烈建议不要这样做(损害可维护性)。看起来您正在尝试进行授权检查() 您是否查看过任何现有的综合授权解决方案?利用其他人的努力来解决这个共同问题可能是有意义的 这是一些例子。特别是,您可以在试图保护的方法中包含类似的内容:
authorize! :read, @company
上面写着“当前用户是否有权查看@company的详细信息”。看起来您正在尝试进行授权检查() 您是否查看过任何现有的综合授权解决方案?利用其他人的努力来解决这个共同问题可能是有意义的 这是一些例子。特别是,您可以在试图保护的方法中包含类似的内容:
authorize! :read, @company
上面写着“当前用户是否有权查看@company的详细信息”房地产公司和建筑公司是分开的模型有什么原因吗?如果你只有一个公司模式,这就太枯燥了。是的,房地产公司在几个方面与建筑公司不同,例如建筑公司有很多项目,而房地产公司没有。房地产公司和建筑公司是分开的模式有什么原因吗?如果你只有一个公司模式,这会很枯燥。是的,RealEstateCompany在几个方面与ConstructionCompany不同,例如ConstructionCompany有很多:项目,而RealEstateCompany没有。问题不在于将当前用户@company.user,问题是找到当前用户,我必须通过@company=ConstructionCompany.find(params[:id])来找到它,
@company=ConstructionCompany.find(params[:id])
有什么问题吗?是的,我想我就是干不了这个代码,有4个型号我有相同的方法纠正用户,在这里,我找到了使用控制器请求的实例,然后检查了所有者问题不是要放置当前用户!=@company.user,问题是找到当前用户,我必须通过@company=ConstructionCompany.find(params[:id])来找到它,@company=ConstructionCompany.find(params[:id])
有什么问题吗?是的,我想我就是干不了这个代码,有4个型号我有相同的方法纠正用户,在这里,我找到了使用控制器请求的实例,然后检查了ownerYeah,这虽然没有很好地解释,但给出了足够的答案!是的,这虽然不是很好的解释,但给出了足够的答案!