Sha256: 6e71d44c86a6ed62f91b0a3eeb4f0fa7fa16763c5bc5e2d4c38ad18c28a2c96b

Contents?: true

Size: 735 Bytes

Versions: 2

Compression:

Stored size: 735 Bytes

Contents

module Difference
   class ActiveRecord::Base
	   def differs_from(object,opt={})
		   raise "Can't compare objects of different Class." if self.class.name != object.class.name

		   # Set attribute list to compare.
		   diff={}
		   attr_list = clean_attr(self.attributes.keys)
		   attr_list = attr_list - clean_attr(opt[:ignore_attributes])
		   attr_list = attr_list &  clean_attr(opt[:only_attributes]) if opt[:only_attributes].present?
		   attr_list.each do |attr|
		     (diff[attr.to_sym] = [self[attr],object[attr]]) if self[attr] != object[attr]
		   end
		diff
	   end

	   private 
		   def clean_attr(collection)
		    collection.present? ? collection.to_a.collect{|e| e.to_sym if e.present?}  : []
		   end
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
difference-1.0.2 lib/difference.rb
difference-1.0.2.alpha lib/difference.rb