ActiveModel :: ForbiddenAttributesError,尽管有params.require(:model).permit

时间:2013-12-27 22:16:17

标签: ruby-on-rails ruby activeadmin mass-assignment strong-parameters

我有一个模型,我允许管理员用户的所有更新。

这是控制器和型号中的相关代码:

      private:
      class ModelsController < ApplicationController
        def model_params
          params.require(:model).permit! if current_user.admin?
        end

        def update
           @model = Model.find(params[:id])

          respond_to do |format|
           if @model.update_attributes(model_params)
             format.html { redirect_to @model, notice: 'model was successfully updated.' }
             format.json { head :no_content }
           else
             format.html { render action: "edit",flash:          
             {error:@model.errors.full_messages.join(', ')} }
             format.json { render json: @model.errors, status: :unprocessable_entity }
           end
         end
        end
      end

      class Model < ActiveRecord::Base
        include ActiveModel::ForbiddenAttributesProtection
      end 

然而, 当我从活动的管理编辑页面更新属性时,我仍然得到ActiveModel :: ForbiddenAttributesError

相关宝石: Rails4,Ruby2.0,activeadmin

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。您还可以指定允许的字段。

ActiveAdmin.register Post do
  permit_params :title, :content
end

答案 1 :(得分:0)

事实证明我必须允许params独立进行活动管理,如此

ActiveAdmin.register Model do
  controller do
    def permitted_params
      params.permit!
    end
  end
end