Метод сериализации Rails ActiveRecord не работает в тестовой среде - PullRequest
6 голосов
/ 09 марта 2011

У меня проблема с десериализацией метода ActiveRecord serialize в моих тестах.
Это просто дает мне чистую строку вместо массива данных.

Пример:

User > ActiveRecord::Base
   serialize :roles, Array
end

Консоль:

u = User.new
u.roles = ["admin", "support"]
u.save
# => true

User.first.roles
# => ["admin", "support"]

В тестовой среде:

User.first.roles
# => "--- \n- admin\n- support\n"

это строка.Кажется, что сериализация YAML там не работает, но я понятия не имею, что нужно сделать, чтобы заставить ее работать.

Я уже пытался выяснить это с помощью this , this , это и это , но без удачи.

Любой совет будет принят с благодарностью.
Мартин

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

В конце концов, чтобы обойти это, мне нужно было напрямую вызывать данные в базе данных без участия метода AR "serialize".

YAML::load(User.first.roles_before_type_cast)

И теперь тестовая среда также непосредственно анализирует данные и дает мне правильные роли Array.

0 голосов
/ 09 марта 2011

Я не знаю, решит ли это вашу проблему, но вы всегда можете получить массив из строки, используя

YAML::load("--- \n- admin\n- support\n")
# => ["admin", "support"]

Итак, в вашей тестовой среде вы должны сделать

YAML::load(User.first.roles)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...