【发布时间】:2016-09-16 06:13:19
【问题描述】:
我有一个错误:
NoMethodError: undefined method 'some_method?' for #<Customer:0x007f8a2c5d7d80>
Customer 是一个 db 支持的 AR 模型。
通过0x007f8a2c5d7d80判断,我有什么方法可以真正知道是哪个客户?
如何把它翻译成合理的东西?
【问题讨论】:
标签: ruby-on-rails
我有一个错误:
NoMethodError: undefined method 'some_method?' for #<Customer:0x007f8a2c5d7d80>
Customer 是一个 db 支持的 AR 模型。
通过0x007f8a2c5d7d80判断,我有什么方法可以真正知道是哪个客户?
如何把它翻译成合理的东西?
【问题讨论】:
标签: ruby-on-rails
好的,this thread 回答了我的问题。
无法确定这到底是哪个对象:
显然,这在多次运行期间会有所不同,因为它仅 取决于系统决定分配内存的位置,而不是任何 对象本身的属性。
有一个很棒的方法 - ObjectSpace#_id2ref - 它允许通过它的object_id实际找到对象:
ObjectSpace._id2ref(object_id)
【讨论】:
我发现了一些东西:)
a = SomethingClass.new
a
# => #<SomethingClass:0x005641a0a3bed8>
0x005641a0a3bed8
#=> 94839867948760
a.object_id * 2
#=> 94839867948760
所以在十进制中这个“werid”代码只是加倍object_id
【讨论】: