次の設定が与えられた場合(現在は機能していません)
class Employee < ActiveRecord::Base
end
class Manager < Employee
end
ActiveAdmin.register Employee do
form do |f|
f.input :name
f.input :joining_date
f.input :salary
f.input :type, as: select, collection: Employee.descendants.map(&:name)
end
end
すべての従業員に単一の「新しい」フォームを用意し、フォームで従業員の STI タイプを選択できるようにしたいと考えています。「タイプ」の選択ボックスは意図したとおりに表示できますが、「作成」ボタンを押すと、次のエラーが表示されます。
ActiveModel::MassAssignmentSecurity::Error in Admin::EmployeesController#create
Can't mass-assign protected attributes: type
今、保護された属性がRailsで機能する方法を認識しており、定義などのいくつかの回避策がありますEmployee.attributes_protected_by_default
が、それはセキュリティを低下させ、あまりにもハックです。
ActiveAdmin のいくつかの機能を使用してこれを実行できるようにしたいのですが、見つかりません。私が示した例は非常に単純化され、工夫されているため、カスタム コントローラー アクションを作成する必要はありません。
ActiveAdmin によって生成されたコントローラーが何らかの方法で識別type
して実行することを望みManager.create
ます。Employee.create
誰かが回避策を知っていますか?