我正在使用带有 rails 4.0.0 的 cancan(1.6.10)。我有一个名为“App”的模型(没有作用域)和一个控制器 Admin::AppsController(它的作用域。即 app/controllers/admin/apps_controller)。
控制器代码如下
class Admin::AppsController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource class: App
def index
end
#CRUD methods and some other custom methods
...
private
def app_params
params.require(:app).permit(:name, :description, :author, :url_path, :validated, :active, :version)
end
end
当我尝试创建“应用程序”时出现错误。
ActiveModel::ForbiddenAttributesError - ActiveModel::ForbiddenAttributesError:
activemodel (4.0.0) lib/active_model/forbidden_attributes_protection.rb:21:in `sanitize_for_mass_assignment'
我添加了
before_filter do
resource = controller_path.singularize.gsub('/', '_').to_sym
method = "#{resource}_params"
params[resource] &&= send(method) if respond_to?(method, true)
end
如https://github.com/ryanb/cancan/issues/835#issuecomment-18663815中所述,但仍然出现上述错误。