У меня есть класс rails, который сериализует один атрибут.
Статистика класса
serialize: список пользователей
конец
Когда статистический объект загружается и его список пользователей изменяется со строки на список пользователей массива, он всегда сериализуется обратно в строку. Платформа, кажется, запоминает и десериализует: список пользователей в строку, даже если он входит как массив.
>> s = Statistic.find 238
=> #<Statistic id: 238, userlist: "--- \n- 2222437\n- \"99779\"\n- \"120429\"\n- \"210503\"\n- 32...">
# Note here: :userlist is an Array in YAML. Why doesn't it get correctly deserialized?
>> s.userlist.class
=> String
>> s.userlist = s.userlist.split(/\s+/)
>> s.userlist.class
=> Array
>> s.save
=> true
>> s.reload
=> #<Statistic id: 238,userlist: "--- \n- 2222437\n- \"99779\"\n- \"120429\"\n- \"210503\"\n- 32...">
>> s.userlist.class
=> String
Цель этого упражнения - преобразовать все списки пользователей String в Array. Если я меняю класс ( serialize: userlist, Array ) перед преобразованием, я получаю исключения TypeMismatch.
ActiveRecord :: SerializationTypeMismatch: список пользователей должен был быть массивом, но был строкой
Есть ли способ заставить AR интерпретировать список пользователей как массив?
% rails --version
Rails 2.3.4