通过 Active Record 在数据库中存储和检索编组对象作为属性的最佳方法是什么

发布于 2024-12-04 13:32:15 字数 390 浏览 5 评论 0原文

我有 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

I have gateway_response object that represents a high level ActiveMerchant gateway response. I'd like to hang on to this object in case I need it for any issues in the future.

I'd like to store it in the DB, and have marshaled it as follows. I've overwritten the getter/setter methods to marshal on assignment and unmarshal on retrieval. This seems to work, but I imagine Active Record has a leaner way to do this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

壹場煙雨 2024-12-11 13:32:15

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

Use the serialize method.

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

Now:

order.gateway_response = r
order.save
order.gateway_response # response object
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文