使用 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
我在迁移中将属性 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
class MyObject < ActiveRecord::Base
def data
super.map do |str|
Range.new(*str.split("..").map(&:to_i))
end
end
end