mongodb_model 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -53,6 +53,11 @@ module Mongo::Model::Assignment
53
53
  set attributes, options.merge(force: true)
54
54
  end
55
55
 
56
+ def initialize attributes = nil
57
+ super
58
+ set attributes if attributes
59
+ end
60
+
56
61
  module ClassMethods
57
62
  inheritable_accessor :_assign, nil
58
63
 
@@ -6,7 +6,7 @@ module Mongo::Model::Crud
6
6
  end
7
7
 
8
8
  def save! *args
9
- save(*args) || raise(Mongo::Error, "can't save #{self.inspect}!")
9
+ save(*args) || raise(Mongo::Error, "can't save invalid model (#{self.errors})!")
10
10
  end
11
11
 
12
12
  def destroy options = {}
@@ -16,7 +16,7 @@ module Mongo::Model::Crud
16
16
  end
17
17
 
18
18
  def destroy! *args
19
- destroy(*args) || raise(Mongo::Error, "can't destroy #{self.inspect}!")
19
+ destroy(*args) || raise(Mongo::Error, "can't destroy invalid model #{self.errors}!")
20
20
  end
21
21
 
22
22
  module ClassMethods
@@ -32,7 +32,7 @@ module Mongo::Model::Misc
32
32
  end
33
33
  nil
34
34
  end
35
-
35
+
36
36
  def original
37
37
  @_original ||= _id? ? self.class.by_id(self._id) : nil
38
38
  end
@@ -6,6 +6,24 @@ module Mongo::Model
6
6
  def _id?; !!_id end
7
7
  def new_record?; !_id end
8
8
 
9
+ inherited do
10
+ alias_method :eql?, :model_eql?
11
+ alias_method :==, :model_eq?
12
+ end
13
+
14
+ def model_eql? o
15
+ return true if equal? o
16
+ self.class == o.class and self == o
17
+ end
18
+
19
+ def model_eq? o
20
+ return true if equal? o
21
+
22
+ variables = {}; ::Mongo::Object.each_object_instance_variable(self){|n, v| variables[n] = v}
23
+ o_variables = {}; ::Mongo::Object.each_object_instance_variable(o){|n, v| o_variables[n] = v}
24
+ variables == o_variables
25
+ end
26
+
9
27
  class << self
10
28
  attr_accessor :db, :connection
11
29
  attr_required :db, :connection
@@ -27,7 +27,7 @@ describe 'Model callbacks' do
27
27
  name String, true
28
28
  has_mail Boolean, true
29
29
  end
30
-
30
+
31
31
  assign do
32
32
  age Integer, true
33
33
  position true
@@ -43,7 +43,7 @@ describe 'Model callbacks' do
43
43
  u.set! banned: '0'
44
44
  u.banned.should == false
45
45
  end
46
-
46
+
47
47
  it "should inherit assignment rules" do
48
48
  class User
49
49
  inherit Mongo::Model
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Model equality' do
4
+ with_mongo_model
5
+
6
+ after{remove_constants :Player}
7
+
8
+ it "integration smoke test" do
9
+ class Player
10
+ inherit Mongo::Model
11
+
12
+ attr_accessor :name, :mission
13
+
14
+ class Mission
15
+ inherit Mongo::Model
16
+
17
+ attr_accessor :name
18
+ end
19
+ end
20
+
21
+ player1 = Player.new name: 'Alex'
22
+ player1.mission = Player::Mission.new name: 'First Strike'
23
+
24
+ player2 = Player.new name: 'Alex'
25
+ player2.mission = Player::Mission.new name: 'First Strike'
26
+
27
+ player1.should == player2
28
+
29
+ player1.mission.name = 'Into the Flames'
30
+ player1.should_not == player2
31
+ end
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongodb_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-01 00:00:00.000000000Z
12
+ date: 2011-09-02 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: i18n
16
- requirement: &2780720 !ruby/object:Gem::Requirement
16
+ requirement: &2781050 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.5'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2780720
24
+ version_requirements: *2781050
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mongodb
27
- requirement: &2780430 !ruby/object:Gem::Requirement
27
+ requirement: &2780760 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2780430
35
+ version_requirements: *2780760
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: file_model
38
- requirement: &2780140 !ruby/object:Gem::Requirement
38
+ requirement: &2780460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2780140
46
+ version_requirements: *2780460
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: validatable2
49
- requirement: &2779840 !ruby/object:Gem::Requirement
49
+ requirement: &2780160 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2779840
57
+ version_requirements: *2780160
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: ruby_ext
60
- requirement: &2779540 !ruby/object:Gem::Requirement
60
+ requirement: &2779870 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2779540
68
+ version_requirements: *2779870
69
69
  description:
70
70
  email:
71
71
  executables: []
@@ -97,6 +97,7 @@ files:
97
97
  - spec/callbacks_spec.rb
98
98
  - spec/crud_spec.rb
99
99
  - spec/db_spec.rb
100
+ - spec/equality_spec.rb
100
101
  - spec/file_model_spec.rb
101
102
  - spec/misc_spec.rb
102
103
  - spec/query_spec.rb