1
如何在沒有基於其他模型對象的模型的情況下授權來自控制器的操作?嵌套資源的權威無頭策略
假設我有一個名爲Server的模型,並且我有一個名爲config_files_controller的嵌套控制器,它沒有相應的模型。
我希望能夠基於Server對象和當前用戶以及爲Server定義的策略來授權來自config_files_controller的操作。
在routes.rb中我有:
resources :servers do
resources :config_files do
collection do
get 'load_file'
end
end
end
的config_files_controller.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
在configuration_file_policy.rb我想有這樣的事情:
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
我可能錯過了一些東西,或者我只是沒有看到明顯的解決方案。任何建議,將不勝感激!
謝謝!
我知道我是過於複雜了!謝謝! –