https://github.com/smashingboxes/activerecord-diff
Simple ActiveRecord diff functionality
https://github.com/smashingboxes/activerecord-diff
Last synced: 10 months ago
JSON representation
Simple ActiveRecord diff functionality
- Host: GitHub
- URL: https://github.com/smashingboxes/activerecord-diff
- Owner: smashingboxes
- Created: 2011-05-03T20:30:10.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2011-05-04T01:02:19.000Z (almost 15 years ago)
- Last Synced: 2025-05-07T05:06:05.871Z (11 months ago)
- Language: Ruby
- Homepage:
- Size: 434 KB
- Stars: 1
- Watchers: 4
- Forks: 13
- Open Issues: 0
-
Metadata Files:
- Readme: README.txt
Awesome Lists containing this project
README
Simple ActiveRecord diff functionality.
Example usage:
require 'active_record/diff'
class User < ActiveRecord::Base
include ActiveRecord::Diff
end
alice = User.create(:name => 'alice', :email_address => 'alice@example.org')
bob = User.create(:name => 'bob', :email_address => 'bob@example.org')
alice.diff?(bob) # => true
alice.diff(bob) # => {:name => ['alice', 'bob'], :email_address => ['alice@example.org', 'bob@example.org']}
alice.diff({:name => 'eve'}) # => {:name => ['alice', 'eve']}
Multiple objects can also be compared. Example:
eve = User.create(:name => 'eve', :email_address => 'bob@example.org')
alice.diff?([bob, eve]) # => true
alice.diff([bob, eve]) # => { :name => ['alice', 'bob', 'eve'], :email_address => ['alice@example.org', 'bob@example.org'] }
By default, ActiveRecord::Base.content_columns is used to decide which attributes
to compare. You can include or exclude attributes from this as follows:
class User < ActiveRecord::Base
diff :include => [:id], :exclude => [:password_hash]
end
Alternatively, you can specify exactly which columns to compare:
class User < ActiveRecord::Base
diff :id, :name, :email_address
end
This is an updated version of the "riff" rails plugin.
To 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/
Contributions
- Zachary Porter ( zporter )