我明白,我需要将ActiveModel :: ForbiddenAttributesProtection混合到我的模型中,并在config / application.rb中设置config.active_record.whitelist_attributes = false.我也从模型中拉出了我所有的attr_accessible电话.
有或没有mixin我正在获得质量分配错误.
::加载ActiveModel :: MassAssignmentSecurity错误:
不能大量分配受保护的属性:home_phone,cell_phone
我错过了什么吗?
解决方法
>将gem’strong_parameters’添加到您的Gemfile并运行包.
>注释(或设置为false)config.active_record.whitelist_attributes = true在config / application.rb
>混合在您的模型中的ActiveModel :: ForbiddenAttributesProtection(Railstast建议在新的初始化程序中执行此操作,config / initializers / strong_parameters.rb ActiveRecord :: Base.send(:include,ActiveModel :: ForbiddenAttributesProtection))
>从现在开始,您将不得不使用如下语法:
model_params = params[:model].permit( :attribute,:another_attribute ) @model.update_attributes( model_params )
当你更新你的模型.在这种情况下,params [:model]中除属性和另一个_attribute之外的任何属性将导致ActiveModel :: ForbiddenAttributes错误.
您还可以使用ActionController :: Parameters中的其他新功能,例如.require(:attribute)强制存在属性.