我正在寻找一种将序列化的值(例如ID)存储在列中的方法。在此之前,有人可能会认为这不是最优设计:该列用于关联记录的ID,但仅在显示记录时使用 - 因此不会对该列进行选择查询,也不会在该列上进行任何连接。
在Rails中,可以使用以下方式对列进行序列化:
class Activity
serialize :data
end
这将列编码为YAML格式。出于历史原因和因为我只存储包含整数的一维数组,所以我认为将其存储为逗号分隔值更合适。
我已成功实现了基本访问器,如下所示:
def data=(ids)
ids = ids.join(",") if ids.is_a?(Array)
write_attribute(:data, ids)
end
def data
(read_attribute(:data) || "").split(",")
end
这个功能很好用。但是我想在这个属性中添加类似数组的方法:
activity = Activity.first
activity.data << 42
...
我该怎么做呢?