我是红宝石新手。我用多种语言编写过代码,如果有很好的参考资料并且有逻辑地解释,通常会很快得到东西。我快疯了。我已经在 stackoverflow 以及其他网站上查看了与此相关的所有可能问题。每个人都说使用 .clone 或 .dub 或 freeze 甚至是 Marshal.load(Marshal.dump(arr)) 之类的东西,但这些都不起作用。
我只想要原始对象的副本,我可以在运行时对其进行修改,而无需对数据库进行任何更改。
rails 项目将一堆产品加载到一个对象中,然后将其注入到下拉列表中。假设它被称为@products。客户希望我从下拉列表中删除某些条目,但不能从数据库中删除它们。
例如,在 php 中,您只需将 db 对象加载到变量中,然后通过 id 删除您不想要的内容,然后遍历生成的对象/数组并创建下拉列表。这不会改变数据库。
我很快意识到,Ruby 不是那样工作的,它会直接从数据库中删除内容,即使我使用 .clone 或 .dup 也是如此。
假设我使用 tempproducts = @products,并且我做了类似 tempproducts.delete(11) 的事情,我不希望系统也去删除 @products(11)。
这是编程的一个基本功能,为什么我想不出做这么简单的事情呢?
非常感谢任何可以帮助我解决这个问题的人,甚至可以发布正确答案的链接!