ActiveAdminでserializedされたカラムを扱う
ActiveAdminのフォームでserializeされたidなどを得ようとするとtextエリアに手入力をしないといけないのでセレクトボックスで選択できるようにしてみました。
まずはシリアライズされたデータを保存するカラムを作成します。
db/migrate/xxxx_create_user.rb class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.text :keyword_ids end end end
空のデータが入らないようにします。
app/model/user.rb serialize :keyword_ids, Array def keyword_ids_row self.keyword_ids end def keyword_ids_row=(values) self.keyword_ids = values.reject(&:blank?) end
permit_paramsで配列を受け取れるようにするのとformで複数選択可能にするためにmultiple: trueを設定します。
app/amin/user.rb permit_params {keyword_ids_row: []} form do |f| f.inputs do f.input :keyword_ids_row, as: :select, collection: Keyword.all, multiple: true end end
チェックボックスにしたければこちら。
f.input , :keyword_ids_row, as: :check_boxes, collection: Keyword.all