別のモデルオブジェクトに基づくモデルのないコントローラからアクションを認可するにはどうすればよいですか?ネストされたリソースのPundit headlessポリシー
私はServerというモデルがあり、対応するモデルを持たないconfig_files_controllerというネストされたコントローラがあります。
私は、サーバーオブジェクトと現在のユーザーとサーバーに定義されたポリシーに基づいて、config_files_controllerからアクションを許可する必要があります。私が持っているroutes.rbをで
:
resources :servers do
resources :config_files do
collection do
get 'load_file'
end
end
end
config_files_controller.rbはこのようなものになります。
:configuration_file_policy.rbでclass ConfigFilesController < ApplicationController
before_filter :authenticate_user!
before_filter :load_server
def index
# displays file names
end
def load_file
# gets file content
end
private
def load_server
@server = Server.find(params[:server_id])
authorize :config_file, "#{action_name}?"
end
end
を私はこのような何かを持っていると思います
class ConfigurationFilePolicy < Struct.new(:user, :configuration_file, :server)
def index?
ServerPolicy.new(user, server).show?
end
def load_file?
ServerPolicy.new(user, server).update?
end
end
私はおそらく何かが不足している、または私は明らかな解決策を見ていないだけです。どんな提案もありがとう!
ありがとうございます!
私はそれを過度に複雑知っていました!ありがとうございました! –