使用 JSONB 将范围存储在数组中

Storing ranges in array with JSONB

我在迁移中将属性 data 设置为 JSONB 类型:

t.jsonb  :data, null: false, default: {}

尝试保存以下内容时:

my_object.data = [1..3, 5..7]
my_object.save

范围被转换为字符串:

my_object.data
=> ["1..3", "5..7"]

有什么方法可以使用 JSONB 处理范围数组吗?

如果您只存储范围,您可以覆盖 data

的 getter
class MyObject < ActiveRecord::Base
  def data
    super.map do |str|
      Range.new(*str.split("..").map(&:to_i))
    end
  end
end