Rails6にActiveAdminを導入し、既存のモデルと連携させた後、app/admin配下にあるActiveAdmin用のパラメータの設定で、permit_paramsを設定したにも関わらずActiveModel::ForbiddenAttributesErrorが発生するときの対処法。
対処法
通常のモデルの方にcreateメソッドを追加することで症状が改善しました。
app/models配下のモデルファイルに以下メソッドを追記。
class モデル名 < ApplicationRecord
省略
def create
変数 = params[:モデル名(小文字)].permit(:カラム名3, :カラム名2,,,,)
モデル名.create(変数)
end
end
実例
app/models/client.rb を以下のように編集。
class Client < ApplicationRecord
validates :pj_name, :client_name, exclusion: { in: [nil, ""] }, length: { in: 3..80 }
validates :amount, numericality: { only_integer: true }
def create
@client = params[:client].permit(:pj_name, :client_name, :first_order_date, :amount, :image, :memo)
Client.create(@client)
end
end
なお、ActiveAdminの方のモデル操作用のファイルは以下。
ActiveAdmin.register Client do
permit_params :pj_name, :client_name, :first_order_date, :amount, :image, :memo
end