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 |