Ruby on rails 在新实例中保存变量

Ruby on rails 在新实例中保存变量,ruby-on-rails,ruby,object,instance,freeze,Ruby On Rails,Ruby,Object,Instance,Freeze,基本上,我希望在更新变量后有一个旧的变量实例 以下是一些可能更好解释的示例: 变量={a:fff} 保存=变量 变量[:a]=000 保存的[:a] 目标是获得fff。相反,最后一行返回预期的000。我试着冻结一个物体: variable = { a: "#fff" } saved = variable saved.freeze variable[:a] = "#000" 但这只会引发一个冻结错误:无法修改冻结的哈希错误只需复制变量即可 saved = variable.dup 复制一下:

基本上,我希望在更新变量后有一个旧的变量实例

以下是一些可能更好解释的示例:

变量={a:fff} 保存=变量 变量[:a]=000 保存的[:a] 目标是获得fff。相反,最后一行返回预期的000。我试着冻结一个物体:

variable = { a: "#fff" }
saved = variable
saved.freeze
variable[:a] = "#000"

但这只会引发一个冻结错误:无法修改冻结的哈希错误

只需复制变量即可

saved = variable.dup
复制一下:

variable = { a: "#fff" }
saved = variable.dup # attention here
variable[:a] = "#000"

saved[:a]

这种方法可以工作,但在RoR模型的情况下,它会从变量中删除ID。我想在rails中保持关联,你可以使用克隆看看,谢谢,这确实有帮助@Sheff3rd您没有提到ActiveRecord,也许您应该澄清您的问题。只需复制变量–这不会复制变量,它会复制对象。当OP提出问题的最初原因是OP没有完全理解变量和对象之间的差异时,使用这种不精确的术语是没有帮助的。