我有一个模型,其属性将数组存储到数据库中。它看起来像这样:
// 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
知道如何解决这个问题吗?
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