我在公司模型中有一个序列化列:
class Company < ActiveRecord::Base
serialize :names
理想情况下,我希望它在数据库中存储这样的不同名称:
---
short: bestbuy
long: bestbuy ltd.
目前在我的公司#edit 页面中,我有一个文本区域:
<%= f.text_area :names %>
如果我在数据库中有该 YAML,它将在浏览器中显示为:
{"short"=>"bestbuy", "long"=>"bestbuy ltd."}
但是,当我提交它时,它在数据库中变成了:
--- ! '{"short"=>"bestbuy", "long"=>"bestbuy ltd."}'
问题
如何使 textarea 显示 YAML 以供编辑者编辑?
如何让数据库保存正确的 YAML,而不是 YAML 和 ruby 哈希的混搭?
更新
如果我强制列是这样的类型Hash
:
serialize :names, Hash
当我尝试保存时会出错:
Admin::CompaniesController#update
属性中的 ActiveRecord::SerializationTypeMismatch 应该是 Hash,但实际上是 String