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

标签 ruby search indexing find

当我创建一个新对象时,假设

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 的对象的方法比较少(例如,在数组中并返回索引)。您可能会遇到的一个问题是,如果您保留对对象的唯一“引用”是 object_id,那么当您不查看时,GC 可能会收集该对象。

关于ruby - 我可以或应该通过 ruby​​ 中的 object_id 属性找到一个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8264732/

相关文章:

C++ Trie 搜索性能

mysql - 根据匹配多个列值的条件选择数据

mysql - 查询搜索所有可能的单词

ruby - Ruby 的最佳邮政编码插件

ruby - 使用 RabbitMQ 的 ruby​​ AMQP 中的高优先级队列高于低优先级队列?

node.js - 使用 $gt 和 $ne 的 MongoDB 查询索引

java - 如何读取lucene 5.5.5索引?

mysql 复合索引也索引单个字段吗?

ruby-on-rails - 将 ROR 应用程序部署到无法访问互联网的机器上

ruby-on-rails - 为什么我的 Controller 的实例变量在 View 中不起作用 (Rails)