Simple ActiveRecord diff functionality.
$ gem install activerecord-diff
require'active_record/diff'classUser < ActiveRecord::BaseincludeActiveRecord::Diffendalice=User.create(:name=>'alice',:email_address=>'alice@example.org')bob=User.create(:name=>'bob',:email_address=>'bob@example.org')alice.diff?(bob)# => truealice.diff(bob)# => {:name => ['alice', 'bob'], :email_address => ['alice@example.org', 'bob@example.org']}alice.diff({:name=>'eve'})# => {:name => ['alice', 'eve']}By default, ActiveRecord::Base.content_columns is used to decide which attributes to compare. You can include or exclude attributes from this as follows:
classUser < ActiveRecord::Basediff:include=>[:id],:exclude=>[:password_hash]endAlternatively, you can specify exactly which columns to compare:
classUser < ActiveRecord::Basediff:id,:name,:email_addressendTo the extent possible under law, Tim Fletcher has waived all copyright and related or neighboring rights to activerecord-diff. This work is published from the United Kingdom. http://creativecommons.org/publicdomain/zero/1.0/