Overriding the == operator in Ruby
In Ruby ==
is just a method (with some syntax sugar on top allowing you to write foo == bar
instead of foo.==(bar)
) and you override ==
just like you would any other method:
class MyClass def ==(other_object) # return true if self is equal to other_object, false otherwise endend
As described above, ==
is a method in Ruby and can be overridden. You code a custom equality condition in the method. For example:
class Person attr_reader :name, :gender, :social_id attr_accessor :age def initialize(name, age, gender, social_id) self.name = name self.age = age.to_i self.gender = gender self.social_id = social_id end def ==(other) social_id == other.social_id endend
You don't need to override other methods any more.