【发布时间】:2020-02-03 22:06:46
【问题描述】:
这是我在 rails 5 模型中使用数组的方法 在迁移中
t.text :diagnoses, array: true, default: []
在模型中
class Patient < ApplicationRecord
serialize :diagnoses, Array
end
在我的种子方法中,我正在这样做
patient = Patient.create(first_name: 'John', last_name: 'Smith', admission: a)
patient.diagnoses = [1, 2]
patient.save!
它给出一个错误
ActiveRecord::SerializationTypeMismatch: can't dump `diagnoses`: was supposed to be a Array, but was a Integer. -- 0
感谢您的帮助!
【问题讨论】:
-
试试
patient.diagnoses = [1, 2].to_yaml。 -
"请记住,数据库适配器会为您处理某些序列化任务。例如:PostgreSQL 中的 json 和 jsonb 类型将在 JSON 对象/数组语法和 Ruby Hash 或 Array 对象之间透明地转换。有在这种情况下无需使用序列化。”这也适用于数组类型。 api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/…
-
@SebastianPalma 我试过
[1, 2].to_yaml同样的错误
标签: ruby-on-rails sqlite serialization ruby-on-rails-5