Каков наилучший способ сохранить и получить маршалированный объект как атрибут в БД через Active Record - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть объект gateway_response, который представляет высокоуровневый ответ шлюза ActiveMerchant. Я хотел бы держаться за этот объект на случай, если он понадобится мне в будущем.

Я хотел бы сохранить его в БД и упорядочить его следующим образом. Я переписал методы getter / setter для маршалирования при назначении и unmarshal при поиске. Кажется, это работает, но я думаю, что Active Record имеет более простой способ сделать это:

  def gateway_response=(r)
   write_attribute(:gateway_response, Marshal.dump(r))
  end
  def gateway_response
    Marshal.load(read_attribute(:gateway_response))
  end

1 Ответ

1 голос
/ 15 сентября 2011

Используйте метод serialize .

class Order
  # add a text column called gateway_response in the `orders` table.
  serialize :gateway_response
end

Сейчас:

order.gateway_response = r
order.save
order.gateway_response # response object
...