如何告诉 Ruby 不要序列化属性或如何正确重载 marshal_dump?

2024-05-29

我的 AR:B 中有一个不可序列化的属性。

o = Discussion.find(6)
Marshal.dump(o)

TypeError: no marshal_dump is defined for class Proc
       from (irb):10:in `dump'

我知道罪魁祸首,我想要的是将这个变量设置为零 在进行任何序列化之前。

我可以做到这一点,但我坚持使用覆盖 marshal_dump 的正确方法

 def marshal_dump
   @problem = nil
   # what is the right return here?
 end

或者有没有办法告诉 Ruby 或 AR 不要序列化对象?


您的专业marshal_dump应该返回一个包含要序列化的数据的对象。该对象将被传回marshal_load在加载时。

在这种情况下,我假设您要转储的数据对应于所有 AR 属性(并且仅对应于这些属性),所以我会尝试:

def marshal_dump
  attributes
end

def marshal_load(data)
  send :attributes=, data, false  # false to override even protected attributes
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何告诉 Ruby 不要序列化属性或如何正确重载 marshal_dump? 的相关文章

  • 使用 cookie 制作 Ruby Net::HTTP::Get 请求

    我想通过 ruby 打开我的 stackoverflow com 页面 我希望看到它就好像我已经过身份验证一样 I took usr来自 Google Chrome 的 cookie 并创建了以下代码片段 require net http
  • Rails 嵌套 with_option :if 在验证中使用

    validate updatable First validation there is with options if gt Proc new object object errors empty do updatable updatab
  • Rails JSON 多重嵌套关联

    我有一个对象 测试列表 其中包含问题和奖励问题 每个问题都有一个主题模型 我试图将它们全部包含在 JSON API 中 但我不断收到奇怪的难以理解的语法错误消息 我可以让它处理问题和主题或奖励问题和主题 但不能同时处理两者 这是我现在所拥有
  • 如何在 C++ 中序列化对象?

    我有一个小的对象层次结构 需要通过套接字连接进行序列化和传输 我需要序列化该对象 然后根据它的类型对其进行反序列化 在 C 中是否有一种简单的方法可以做到这一点 就像在 Java 中一样 需要明确的是 我正在寻找将对象转换为字节数组 然后再
  • 使用单表继承更改 Rails 中 ActiveRecord 类的类型

    我有两种类型的课程 BaseUser lt ActiveRecord Base and User lt BaseUser 它使用 Authlogic 的身份验证系统来 acts as authentic 这种继承是使用单表继承来实现的 如果
  • 在 Rails 控制器中存储对象的最佳方式(会话除外)?

    我有一个 Rails 控制器 class Controllername lt application def method1 obj API CALL session obj access token redirect to redirec
  • Ruby on Rails - 无法加载此类文件 - net/ssh

    我已经为此苦苦挣扎了几天了 当我尝试从视图调用助手中的方法来执行 ssh 时 它会抛出该错误 加载以下文件时发生此错误 net ssh 但是当我将代码复制到test rb文件并从提示符处执行ruby test rb它连接完美 可能是什么问题
  • setInterval() 相当于 ruby

    在 JavaScript 中你可以这样做 setInterval func delay 我似乎无法在谷歌上找到任何我真正想要的东西 红宝石有等效的吗 提前致谢 你可以做类似的事情 Thread new do loop do sleep de
  • 使用 Ruby SDK 将文件上传到 Amazon S3

    我正在尝试上传文件 一个简单的 hello txt 我正在关注文档 但无法将其上传到我的存储桶 START AWS CLIENT s3 Aws S3 Resource new bucket s3 bucket BUCKET NAME beg
  • 使 diff-lcs 的输出可读

    我正在使用 diff lcs gem 输出两个 html 内容体之间的差异 这是示例内容 版本一 p Paragraph one Sentence one p p Paragraph two Another sentence p p Par
  • 使用 gem 添加辅助方法

    我找到了很多有关添加表单辅助方法的信息 请参阅我的其他问题之一 但我找不到有关添加辅助方法的任何信息 就好像它们是在application helper rb 我尝试过复制application helper rb从 Rails 应用程序到
  • 无||假与假||红宝石中的零

    nil false回报false and false nil回报nil 有人对此有解释吗 在 Ruby 中 一切都是表达式 表达式将返回其中计算的最后一个值 对于您的两个示例 左侧 表达式的计算结果为假值 因此 Ruby 然后计算右侧并返回
  • 如何将 --no-ri --no-rdoc 设置为 gem 安装的默认值? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将 no ri no rdoc 设置为 gem 安装的默认值 https stackoverflow com questions 1381725 how to make no ri no rdoc
  • 在 Ruby 中按名称获取一个类?

    有一个包含模块和类名称的字符串 例如 Admin MetaDatasController 我如何获得实际课程 如果没有模块 以下代码将起作用 Kernel const get MetaDatasController 但它与模块中断 ruby
  • Ruby IMAP 库:如何显示文件夹中的所有邮件?

    我需要一个脚本来获取所有文件夹中的所有电子邮件 并对其及其附件进行本地备份 here https www ombulabs com blog ruby imap a comprehensive guide to interacting wi
  • Ruby:如何将多个方法调用与“发送”链接在一起

    必须有一种内置的方法来做到这一点 对吧 class Object def send chain arr o self arr each a o o send a return o end end 我刚刚遇到了这个 它确实需要注入 def s
  • 如何将上传的二进制文件 (ASCII-8BIT) 嵌入 XML (UTF-8) 中?

    我有一个通过常规上传的文件form for 这给了我一个ActionDispatch Http UploadedFile我可以调用的 params 哈希中的对象 read来获取内容 我现在需要将该文件嵌入到 XML 文档中 我现在使用常规
  • 登录西纳特拉?

    我无法弄清楚如何使用 Sinatra 记录消息 我不想记录请求 而是在我的应用程序中的某些点记录自定义消息 例如 当获取 URL 时 我想记录 Fetching url 这就是我想要的 指定日志级别的能力 例如 logger info Fe
  • Rails apns 用于向 Apple ipad 推送通知 - 使用哪个 gem?

    我希望从 Rails 3 0 3 应用程序向苹果推送通知 我发现了各种 apns ish 宝石 包括 apns on rails 其中一些似乎有点旧 1 或 2 年 并且非常不清楚 2012 年使用的 当前 是什么 根据我的标准 您能推荐使
  • RVM 要求错误

    我安装了 OS X Mavericks 并且正在尝试运行rvm requirements在终端中 它给了我这个错误 Installing required packages autoconf automake libtool pkgconf

随机推荐

  • Laravel 5 包中依赖注入的最佳方法

    我正在为 Laravel 5 开发一个包 现在我需要受益于依赖注入来拥有一个更具可扩展性和可靠性的应用程序 我不知道最好采用哪种方法以及为什么 这是我的一段代码 我需要注射Lang类依赖 class MyController extends
  • 将 Bootstrap CSS 中的列表居中[重复]

    这个问题在这里已经有答案了 重复报告后编辑 抱歉 我认为建议的重复项实际上可能是重复项 我先尝试了一下 但它对我不起作用 因此出现了一个新问题 再次查看新的建议答案后 我意识到我的问题可能与我正在使用的工具 codepen io 的开箱即用
  • 通过函数传递自定义比较器

    我有一个带有函数的类 MyClass doStuff std vector
  • 列出自定义类成员和类型

    这似乎是最基本的事情 但不知何故我找不到答案 也无法弄清楚 假设我有一个自定义类 public class WineCellar public string year public string wine public double nrb
  • 谷歌分析与 Ionic

    我正在尝试使用 Google Analytics 添加到 Ionic phonegap Covdova 应用程序中this https blog nraboy com 2014 06 using google analytics ionic
  • 升级到 Gitlab 6.0 后图形丢失

    昨天 我将 Gitlab 安装从 5 3 升级到 6 0 技术上从 5 3 升级到 5 4 从 5 4 升级到 6 0 从那时起我无法显示网络和其他图表 在网络页面上 似乎有些 JavaScript 未加载 因为我收到 网络未定义 错误 图
  • 在 C++ 中使用 istringstream 时“因一个错误而关闭”

    执行以下代码时出现一个错误 include
  • Java Web Start 的证书已过期

    JWS 对代码签名证书过期有何反应 根据我的观察 它似乎忽略了 CA 签名证书的到期日期 但我想找到一些确凿的证据 例如官方文档 来证实这一点 如果签名的 jar 被赋予时间戳 来自时间戳权威 那么即使在证书过期之后签名仍然有效 假设时间戳
  • 电子无声打印

    我目前正在构建一个电子应用程序 我的本地文件系统上有一个 PDF 我需要以静默方式打印出来 在默认打印机上 我遇到了节点打印机库 但它似乎对我不起作用 有没有一个简单的解决方案可以实现这一目标 首先 几乎不可能理解 无声 打印的含义 因为一
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 如何使用 Installshield 动态自定义 MSI 文件属性中的产品版本

    我正在使用 Installshield 2019 生成基本的 MSI 文件 我想自定义 Windows 资源管理器文件属性中显示的文件属性 在详细信息选项卡 gt 标题 主题 评论中 遗憾的是 而且奇怪的是 产品版本没有出现在我生成的 MS
  • PostgreSQL & regexp_split_to_array + 取消嵌套

    我有这样的绳子 测试1 纽约 X 测试 2 芝加哥 Y 测试 3 宾夕法尼亚州哈里斯堡 Z 我需要的结果是 Column1 Column 2 Column3 Test 1 new york X Test 2 chicago Y Test 3
  • Camera2 中的前置摄像头未捕获图像

    我有 Camera2 的代码https github com googlesamples android Camera2Basic https github com googlesamples android Camera2Basic 我面
  • 根据AADB2C属性值在AAD中查找用户

    如果我在 Azure AD B2C 中有一个基于 Azure AD 企业 身份创建的用户 如下所述 https learn microsoft com en us azure active directory b2c active dire
  • mobileapplication.mobileevent BACK_BUTTON_PRESSED

    我的两个视图中有 2 个 Android 本机音频实例 当用户按下后退按钮并离开视图时 我试图让音频停止 因为它不会自动发生 我查看了文档并看到了 MobileEvent 类 我尝试实现它的构造函数 但没有成功 这是我的第一个应用程序 为此
  • 艾玛对枚举类型的报道

    我正在运行 EclEmma Eclipse 的 Emma 插件 覆盖率报告仅显示我定义的 Enum 的部分覆盖率 即使它显示了 Enum 中唯一被覆盖的值 我假设支持枚举的隐含方法存在覆盖范围差距 但我不太确定 例如 使用此枚举 EclEm
  • 将新的 XElement 添加到 Xdocument

    我有以下代码 它成功写入 XML 文件 但是 由于进行了 tagRegistry Save 调用 它每次都会被覆盖 如何将新的 XElement 添加到现有文件 目前该文件只是被覆盖 public void saveTag if File
  • HashSet查找复杂度?

    查找操作 ORcontains对于单身的可以O n 在最坏的情况下对吗 因此对于n元素查找于hashSet将O n 2 是的 但这确实是最坏的情况 如果HashSet具有相同的哈希码 或通向同一存储桶的哈希码 具有正确书写的hashCode
  • Visual Studio 2010 中的 GTK#

    我一整天都在尝试让 GTK 在 Windows Server 2008 R2 x64 上的 Visual Studio 2010 中工作 以便我可以开始编写漂亮的跨平台 GUI 应用程序 但我对 C 有点陌生 我有一个世界的麻烦 我安装了最
  • 如何告诉 Ruby 不要序列化属性或如何正确重载 marshal_dump?

    我的 AR B 中有一个不可序列化的属性 o Discussion find 6 Marshal dump o TypeError no marshal dump is defined for class Proc from irb 10