【发布时间】:2011-04-03 16:39:09
【问题描述】:
我正在寻找一种方法来存储例如的序列化值。列中的 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
...
我该怎么做?
【问题讨论】:
标签: ruby-on-rails arrays activerecord serialization