Ответ 1
Обновление
Хорошо, это то, что вы ищете:
User.find(params[:id]).attributes_before_type_cast["preferences"][:value]
Это вернет строку в ее сериализованной форме.
Это самое близкое, что вы можете получить, которое я могу найти, это не сработает, если вы уже получили объект, вытащенный из базы данных.
Извините за неправильное понимание вашего вопроса. Вы также можете использовать это из модели пользователя.
Оставив старый ответ на всякий случай, другой способ сделать это кому-то полезен.
Старый ответ
Просто, чтобы понять, что я понимаю, вы хотите, чтобы необработанные данные из таблицы. Данные, которые рельсы сериализуются и помещаются в базу данных.
EX. Вы помещаете в ['site_id','last_update','last_restart']
, и получаете "---\n- site_id\n- last_update\n- last_restart\n"
, и он помещается в базу данных и сохраняется. Вы хотите получить это: "---\n- site_id\n- last_update\n- last_restart\n"
из базы данных.
Хорошо, это потребовало некоторой фанатации из базы данных, но вы можете сделать это так.
В проекте у меня есть сериализованный вызов массива devise_table_preferences
, в котором перечислены предпочтения для отображения в таблице в определенном порядке, например:
user.devise_table_preferences = ['site_id','last_update','last_restart']
Сериализованное представление выглядит так:
"---\n- site_id\n- last_update\n- last_restart\n"
Используя ваш метод выше, я сделал такой запрос:
preference = ActiveRecord::Base.connection.execute("SELECT devise_table_preferences FROM users WHERE id = #{@user.id}")
Он возвращает объект в консоли следующим образом:
preference = #<Mysql2::Result:0x007fe4cdf34850>
Запуск:
preference.first[0]
Дайте мне это:
"---\n- site_id\n- last_restart\n"
Я знаю, что это большая работа, но она определенно даст вам ваши данные в сериализованном виде. Надеюсь, что это поможет вам.