【发布时间】:2016-03-19 00:58:26
【问题描述】:
我有一个 Users 模型和一个关联的 Company 模型以及我使用脚手架构建的相应控制器。
每个company 操作[:show, :edit, :update, :destroy] 只能访问关联的user。
Rails 脚手架生成了以下代码:
class CompaniesController < ApplicationController
before_action :set_company, only: [:show, :edit, :update, :destroy]
<actions>
private
def set_company
@company = Company.find(params[:id])
end
然而,这允许任何用户访问任何公司,这是一个安全问题。因此,我将set_company 方法更改如下:
def set_company
if current_user.companies.find_by_id(params[:id]).present?
@company = current_user.companies.find(params[:id])
else
redirect_to companies_url
end
end
这似乎工作正常。谁能告诉我这是否是处理此问题的正确方法?
【问题讨论】:
标签: ruby-on-rails-4 controller associations