如何在 Ruby on Rails 中通过 ActiveAdmin 存储字符串数组

问题描述 投票:0回答:1

我有一个模型,其属性将数组存储到数据库中。它看起来像这样:

// 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 更新数据库时,出现以下错误:

Admin::JobPostsController#create 中的 ActiveRecord::SerializationTypeMismatch 无法序列化

tags
:本来应该是一个数组,但实际上是一个字符串。 --“标签”

以下是我的 ActiveAdmin 文件:

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

知道如何解决这个问题吗?

ruby-on-rails ruby activeadmin
1个回答
0
投票
  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
© www.soinside.com 2019 - 2024. All rights reserved.