Make sure that you declare the database column used for the serialized store as a text, so there's plenty of room.
假设 Model 里面有一个字段 body
class CreatePosts < ActiveRecord::Migration[5.0]
def change
create_table :posts do |t|
t.string :title
t.text :body # 作为store序列化的字段
t.boolean :published
t.integer :status
t.timestamps
end
end
end
接着设置对应的序列化属性
class Post < ApplicationRecord
# enum status: [ :active, :archived ] # 这里使用数组 与之对应的数字从0依次增加
enum status: { active: 10, archived: 20 } # 明确指定对应的数字
store :body, accessors: [ :color, :homepage, :email ], coder: JSON # 序列化属性
end
转载
http://api.rubyonrails.org/classes/ActiveRecord/Store.html
阅读 http://api.rubyonrails.org 相关的笔记
使用 Model 里面的一个字段作为一个序列化的封装,用来存储一个 key/value
文档里面提到,对应的存储字段的类型最好是 text, 以便确保有足够的存储空间
假设 Model 里面有一个字段 body
接着设置对应的序列化属性
这样设置后,在 body 这一个字段上就可以存储多个 key/value 了