Ich habe ein Users
Modell und ein damit verbundenes Company
Modell mit entsprechenden Controllern, die ich mit Gerüsten gebaut habe.Rails: Wie Controller-Aktionen nur für assoziierte Benutzer verfügbar sind
Jeder company
Aktion [:show, :edit, :update, :destroy]
sollte nur die zugehörige user
zugänglich sein.
Rails Gerüst hat den folgenden Code erzeugt:
class CompaniesController < ApplicationController
before_action :set_company, only: [:show, :edit, :update, :destroy]
<actions>
private
def set_company
@company = Company.find(params[:id])
end
Dies ermöglicht jedoch jeder Benutzer jede Firma zuzugreifen, die ein Sicherheitsproblem ist. Ich änderte daher die set_company
Methode wie folgt:
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
Dies richtig zu funktionieren scheint. Kann mir jemand sagen, ob dies der richtige Weg ist, um mit diesem Problem umzugehen?