Ruby on Rails で ActiveAdmin 経由で文字列配列を保存する方法

概要

配列をデータベースに保存する属性を持つモデルがあります。以下にその様子を示します。

// It has over 5 fields but the field tags is a string array. All others are just strings.

class JobPost < ApplicationRecord
    serialize :tags, Array
end

Railsコンソール経由でデータベースを更新しようとすると、すべて正常に動作します。しかし、ActiveAdmin 経由でデータベースを更新しようとすると、次のエラーが発生します。

以下は私の ActiveAdmin ファイルです。

ActiveAdmin.register JobPost do
  permit_params :title, :location, :companyname, :tags, :applyurl
end

これを修正する方法はありますか?

解決策

  form do |f|
    f.inputs do
      f.input :tags, as :string, label: "Tags (space separated)"
    end
  end

モデルでは、タグ文字列を保存する前に実際の配列に変換する必要があります。

  def tags=(items)
    if items.is_a? String
      items = items.split(' ')
      items.each do |i|
        i.to_s
      end
    end
    super items
  end