我想在数据库中添加数组。我使用ruby,sequel和postgresql,但对真实方式提出质疑,而不是程序实现。 我看到3条道路:
[1,2,3,4]
之类的数组:在数据库中will look like "{1,2,3,4}"
。但在此之后,我不知道如何将此条目转换回[1,2,3,4]
而不会废话。[1,2,3,4]
这样的数组看起来像"[1,2,3,4]"
。我可以通过JSON.parse
轻松转换回来。[1,2,3,4]
看起来像"\x04\b[\ti\x06i\ai\bi\t"
,但风险很大,因为红宝石更新后可以更改数据(或者我错了)
任何人都可以讲述真实的方式吗?答案 0 :(得分:3)
Sequel原生支持Postgres Array列,假设您不需要进一步规范化yourschema。
How do I define an ARRAY column in a Sequel Postgresql migration?
http://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/pg_array_rb.html
答案 1 :(得分:0)
恕我直言,干净的方法将是一个额外的表格。理想情况下,DB中的每一行代表一个观察,并且具有数组或json列最可能与之相矛盾。我建议把额外的桌子视为好的设计,而不是过度杀伤。
答案 2 :(得分:-1)
利用ActiveRecord提供的serialize
class User < ApplicationRecord
serialize :preferences, Array
end
#In migration Add a string field
class AddSerializePreferencesToUsers < ActiveRecord::Migration[5.1]
def change
add_column :users, :preferences, :string
end
end
#In rails console.
u = User.first
u.preferences # => []
u.preferences << 'keep coding'
u.preferences # => ['keep coding']
u.save
u.reload.preferences # ['keep coding']
希望这有帮助