我有一组可以组合在一起的有限情况(4):
fragile
long
nothing_above
keep_upright
我正在寻找一种将它们存储在数据库中的方法(发生时是PostgreSQL)。 我试图创建一个专用类型:
CREATE TYPE parcel_peculiarity AS ENUM('fragile', 'long', 'nothing_above', 'keep_upright');
并将它们存储在PG阵列中:
add_column :parcels, :peculiarity, :parcel_peculiarity, default: [], array: true
但是,当我运行此迁移时,Rails会朝我扔:
TypeError: can't quote Array
也许我没有正确的方法。
任何帮助表示赞赏。谢谢
答案 0 :(得分:0)
您可以将语法重写为:-
add_column :parcels, :peculiarity, :text, array: true, default: []
或者:-
1 =>添加列peculiarity: string
add_column :parcels, :peculiarity, :text
2 =>将列序列化为模型中的数组
class Parcel < ApplicationRecord
serialize :peculiarity, Array
end
查询将类似于:-
parcel_obj = Parcel.new
parcel_obj.peculiarity = ['foo', 'bar', 'etc']
parcel_obj.save
获取peculiarity
p = Parcel.find(x)
p.peculiarity
=> ['foo', 'bar', 'etc']