read_attribute_before_type_cast не работает с serialize: - PullRequest
3 голосов
/ 28 декабря 2011

В моем приложении Rails есть следующая модель, использующая сериализацию с кодеком JSON.Мои столбцы базы данных имеют тип 'text'

class Sample < ActiveRecord::Base
  serialize :face_detect, JSON
end

Когда я запускаю следующее в консоли rails

Sample.first.read_attribute_before_type_cast('face_detect').class

Я ожидаю класс 'String', так как я ожидаюbefore_type_cast также означает перед сериализацией, но вместо этого я получаю класс Hash.Как это возможно?

(с использованием rvm, с ruby-1.9.2-p290 с рельсами (3.1.3) и postgresql на Mac OSX)

Ответы [ 2 ]

4 голосов
/ 19 ноября 2012

Сериализация происходит очень глубоко внутри Arel, но я мог получить доступ к предварительно сериализованному значению, как это:

@sample.instance_variable_get("@attributes")["face_detect"].serialized_value
1 голос
/ 17 ноября 2014

для рельсов 4:

@attributes['data'].serialized_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...