【发布时间】:2017-12-14 10:07:54
【问题描述】:
我正在使用 RoR 5.0.1。我有一个没有持久化到数据库的模型。它有两个字段
first_field
second_field
如何强制其字段具有相同值的对象的不同实例化具有相同的哈希值?现在似乎每个对象的唯一创建都有不同的哈希值,即使各个属性具有相同的值。所以如果我创建两个不同的对象
o1 = MyObject.new({:first_field => 5, :second_field => "a"})
o2 = MyObject.new({:first_field => 5, :second_field => "a"})
我希望它们具有相同的哈希值,即使它们是对象的不同实例。
【问题讨论】:
-
您可以覆盖
MyObject(ruby-doc.org/core-2.4.1/Object.html#method-i-hash) 的hash方法,但这会破坏很多东西... -
您是否希望它们相同以便编辑一个修改另一个,或者您希望
o1 == o2成为true? -
@MichaelGorman,如果 h = {},那么我希望 h[o1] 产生与 h[o2] 相同的结果。
-
this question 的答案应该是你要找的
标签: ruby-on-rails hash ruby-on-rails-5