Adding comparison using ids rather than hashes
This commit is contained in:
parent
7875113d95
commit
778e486328
|
@ -92,6 +92,21 @@ module CouchRest
|
|||
alias :to_param :id
|
||||
alias :new_record? :new?
|
||||
alias :new_document? :new?
|
||||
|
||||
# Compare this model with another by confirming to see
|
||||
# if the IDs and their databases match!
|
||||
#
|
||||
# Camparison of the database is required in case the
|
||||
# model has been proxied or loaded elsewhere.
|
||||
#
|
||||
# A Basic CouchRest document will only ever compare using
|
||||
# a Hash comparison on the attributes.
|
||||
def == other
|
||||
return false unless other.is_a?(Base)
|
||||
database == other.database && id == other.id
|
||||
end
|
||||
alias :eql? :==
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
6
spec/fixtures/models/project.rb
vendored
Normal file
6
spec/fixtures/models/project.rb
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
class Project < CouchRest::Model::Base
|
||||
use_database DB
|
||||
property :name, String
|
||||
timestamps!
|
||||
view_by :name
|
||||
end
|
|
@ -142,8 +142,25 @@ describe "Model Base" do
|
|||
@obj.destroyed?.should be_true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe "comparisons" do
|
||||
describe "#==" do
|
||||
it "should be true on same document" do
|
||||
p = Project.create
|
||||
p.should eql(p)
|
||||
end
|
||||
it "should be true after loading" do
|
||||
p = Project.create
|
||||
p.should eql(Project.get(p.id))
|
||||
end
|
||||
it "should not be true if databases do not match" do
|
||||
p = Project.create
|
||||
p2 = p.dup
|
||||
p2.stub!(:database).and_return('other')
|
||||
p.should_not eql(p2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "update attributes without saving" do
|
||||
|
|
Loading…
Reference in a new issue