Использование ActiveRecord сериализации с Hash не работает? - PullRequest
0 голосов
/ 25 сентября 2011

Я читал об использовании сериализации из ActiveRecord, и я думал, что понял, как его использовать, но мои попытки терпят неудачу, поэтому я не уверен, возможно ли то, что я хочу, таким образом?Я хочу хранить простой хеш, связывающий идентификаторы объектов, называемые начислениями, с количеством дней.Например, {"1" => "12", "5" => "24"}.Я настроил это следующим образом:

class User < ActiveRecord::Base
      serialize :accrual_days, Hash
end

И для базы данных

def self.up
    unless column_exists? :users, :accrual_days
        add_column :users, :accrual_days, :text
    end
end

Затем я вошел в консоль rails и ввел следующие команды:

User.find (1) .accrual_days

=> nil

User.find (1) .accrual_days = {"1" => "12"}

=> {"1" => "12"}

User.find (1) .accrual_days

=> nil

Похоже, что accrual_daysустановить, но тогда это не сохраняется.Я попытался сохранить пользователя после установки дня начисления и сохранить его в виде строки вместо текста в базе данных, но проблема сохраняется.Что я делаю не так?

1 Ответ

4 голосов
/ 25 сентября 2011

Вы не сохраняете значения в базе данных.

Попробуйте

user = User.find(1)

user.accrual_days = {"1"=>"12"}

user.save

User.find(1).accrual_days
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...