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