2015-11-22 3 views
1

У меня есть поле массива в одной из моих моделей с элементами, являющимися символами. Например, вот как я присваиваю значение этого поля:Rails serialize symbol array attribute

Model.field = [:a, :b, :c] 

Я использую Postgres так хранить эти массивы в столбце массива. Проблема в том, что Rails автоматически сериализует символы из заданного массива в строки при сохранении их в базе данных, но не преобразует их обратно в символы, когда объекты извлекаются из базы данных. Как я могу сказать, что моя модель автоматически преобразует значения массива в символы?

+0

О, я вижу, что вы имеете в виду. Я удалю свой ответ, поскольку вам нужен «автоматический» способ сделать это. – Sylar

+0

Действительно. Я думаю об использовании 'serialize: field, Serializer', но я предполагаю, что' Serializer' уже существует для моих нужд. – linkyndy

ответ

1

Вы можете попробовать переопределить метод чтения атрибутов и делает преобразование типов данных есть

class Model < ActiveRecord::Base 
    # ... 

    def field 
    self[:field].map(&:to_sym) 
    end 
end 
+0

Я предпочитаю не делать этого, так как мне придется столкнуться с другими признаками ActiveRecord (такими как 'attributes'). – linkyndy