What’s an easy way to compare for equality two model instances (that
haven’t been saved yet). Or in other words pretty much just two
object instances. I’ve tried “==” and “eql?” on the objects directly
and this doesn’t work.
How about: “m1.to_yaml.eql?(m2.to_yaml)” Is this the simplest way?
What’s an easy way to compare for equality two model instances (that
haven’t been saved yet). Or in other words pretty much just two
object instances. I’ve tried “==” and “eql?” on the objects directly
and this doesn’t work.
How about: “m1.to_yaml.eql?(m2.to_yaml)” Is this the simplest way?
Guess I was looking for an automated way to do this if one existed?
or is there some concept of having to implement some basic comparison
class in Ruby & then being able to have the “==” method work?
Classes can implement their own == method. ActiveRecord::Base does do
this, just not the way you want it too - ActiveRecord considers two
objects to be equal if they correspond to the same row in the database
(ie have the same id). If you have two unsaved objects then saving
them would yield two different rows in the database, therefore by AR’s
reckoning they are not equal. While you could override == on your
class that may well break bits of ActiveRecord that expects == to
behave in a certain way.
thanks for the advice Frederick - I think I’ll just implement my own
“custom_eql?” method on my class then to be safe…
Guess I was looking for an automated way to do this if one existed?
or is there some concept of having to implement some basic comparison
class in Ruby & then being able to have the “==” method work?
Classes can implement their own == method. ActiveRecord::Base does do
this, just not the way you want it too - ActiveRecord considers two
objects to be equal if they correspond to the same row in the database
(ie have the same id). If you have two unsaved objects then saving
them would yield two different rows in the database, therefore by AR’s
reckoning they are not equal. While you could override == on your
class that may well break bits of ActiveRecord that expects == to
behave in a certain way.
Fred
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.