我想定义类似include?(obj)的方法,它检查我的类数组中obj的存在。有没有办法在ruby中做到这一点?
我有Item类
class Item < ActiveRecord::Base
include Comparable
belongs_to :itemable, :polymorphic => true
def <=>(other)
self.itemable.id <=> other.itemable.id
end
...
end
我希望以这种方式使用它
item_set1.subset? item_set2
但结果却没有使用&lt; =&gt;在此过程中,仅使用item.id进行检查。 如何覆盖子集或其他方法来完成这项工作。
由于
答案 0 :(得分:3)
如果你的班级是一个实现'每个'的集合 你可以混合Enumerable 获得一系列方法,包括'include?'
答案 1 :(得分:1)
您是说数组是实例变量吗?
class Foo
def my_array_include?(obj)
@my_array.include?(obj)
end
end
答案 2 :(得分:0)
设置使用eql?和哈希,而不是==或&lt; =&gt;。试试这个:
class Item < ActiveRecord::Base
...
def eql?(other)
id == other.id
end
def hash
id
end
end