通过Active Record在db中存储和检索封送对象作为属性的最佳方法是什么?

时间:2011-09-15 19:03:39

标签: ruby-on-rails activerecord marshalling

我有gateway_response对象,表示高级ActiveMerchant网关响应。我想继续讨论这个问题,以防我将来遇到任何问题。

我想将它存储在数据库中,并按如下方式对其进行封送处理。我已经覆盖了getter / setter方法来编组赋值和解组时解组。这似乎有效,但我认为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 个答案:

答案 0 :(得分:1)

使用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