我可以或者应该通过ruby中的object_id属性找到一个对象吗?

当我制作一个新物体时,让我们说吧

o = Object.new 

这个对象有一个id,

 o.object_id #=> ######## 

我还使用Object类创建了其他几个对象。 使用object_id属性让ruby找到对象’o’的最佳方法是什么? 我在想类似的东西

 search_id = o.object_id search_result = Object.find(search_id) 

其中’search_results’将是与’search_id’对应的对象。 此外,我肯定会欣赏一种完全不同的方法来索引对象并通过guid或其他东西检索它们。 非常感谢!

嗯,我想我真的只需要在数据库的上下文中考虑这个问题,只需使用MySQL查询或我选择查找对象的数据库。 我想的越多,通过这个想象中的’find()’方法可以访问的唯一可能的东西是新创建或“活跃”的东西? 很抱歉让这个问题变得糟透了。

是的你可以:

 irb(main):002:0> s1 = "foo" #=> "foo" irb(main):003:0> s2 = ObjectSpace._id2ref(s1.object_id) #=> "foo" irb(main):004:0> s2.object_id == s1.object_id #=> true irb(main):005:0> s2[0] = "z" #=> "z" irb(main):006:0> s1 #=> "zoo" 

你应该这样做吗? 我会把它留给你。 存在具有可序列化id的对象的较少令人讨厌的方式(例如,在Array中并返回索引)。 您可能遇到的一个问题是,如果您保留给对象的唯一“引用”是object_id ,那么当您不查看时,GC可以收集该对象。