1
我在我的一个模型中有一个数组字段,元素是符号。例如,以下是我如何为此字段赋值:Rails序列化符号数组属性
Model.field = [:a, :b, :c]
我使用Postgres,因此我将这些数组存储在数组列中。问题在于Rails会在将数组保存到数据库时自动将给定数组中的符号序列化为字符串,但在从数据库中提取对象时不会将它们转换回符号。我如何告诉我的模型自动将数组值转换为符号?
我在我的一个模型中有一个数组字段,元素是符号。例如,以下是我如何为此字段赋值:Rails序列化符号数组属性
Model.field = [:a, :b, :c]
我使用Postgres,因此我将这些数组存储在数组列中。问题在于Rails会在将数组保存到数据库时自动将给定数组中的符号序列化为字符串,但在从数据库中提取对象时不会将它们转换回符号。我如何告诉我的模型自动将数组值转换为符号?
你可以尝试重写属性读取方法,做数据类型转换有
class Model < ActiveRecord::Base
# ...
def field
self[:field].map(&:to_sym)
end
end
我不喜欢,因为我将很难处理其他ActiveRecord好东西(比如'attributes')。 – linkyndy
哦,我明白你的意思。我会删除我的答案,因为您需要一种“自动”的方式。 – Sylar
确实。我正在考虑使用'serialize:field,Serializer',但我猜'Serializer'已经满足我的需要了。 – linkyndy