如何正确保存数据库中的数组?

时间:2018-03-03 10:19:05

标签: arrays ruby database postgresql sequel

我想在数据库中添加数组。我使用rubysequelpostgresql,但对真实方式提出质疑,而不是程序实现。 我看到3条道路:

  1. 使用特殊adapters。在某些更改后,它有助于在db中保存[1,2,3,4]之类的数组:在数据库中will look like "{1,2,3,4}"。但在此之后,我不知道如何将此条目转换回[1,2,3,4]而不会废话。
  2. 将数组转换为json并将其保存到数据库。像[1,2,3,4]这样的数组看起来像"[1,2,3,4]"。我可以通过JSON.parse轻松转换回来。
  3. Marshal转换数组并保存。数组[1,2,3,4]看起来像"\x04\b[\ti\x06i\ai\bi\t",但风险很大,因为红宝石更新后可以更改数据(或者我错了) 任何人都可以讲述真实的方式吗?

3 个答案:

答案 0 :(得分:3)

答案 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']

希望这有帮助

相关问题