plain_old_model 0.1.2 → 0.1.3

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.
@@ -25,16 +25,17 @@ module PlainOldModel
25
25
 
26
26
  def assign_attributes(new_attributes, options = {})
27
27
  return unless new_attributes
28
+ attributes = new_attributes.dup
29
+
28
30
  associations.each do |association|
29
31
  attr_name = association.attr_name
30
- if new_attributes.include?(attr_name)
31
- value = association.create_value_from_attributes(new_attributes[attr_name])
32
-
32
+ if attributes.include?(attr_name)
33
+ value = association.create_value_from_attributes(attributes[attr_name])
33
34
  set_attribute(attr_name, value)
34
- new_attributes = new_attributes.delete_if { |key, value| key.to_s == attr_name.to_s }
35
+ attributes = attributes.delete_if { |key, value| key.to_s == attr_name.to_s }
35
36
  end
36
37
  end
37
- assign_simple_attributes(new_attributes, options)
38
+ assign_simple_attributes(attributes, options)
38
39
  end
39
40
 
40
41
  def associations
@@ -1,3 +1,3 @@
1
1
  module PlainOldModel
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -79,6 +79,15 @@ describe PlainOldModel::Base do
79
79
  @person.addresses[1].lname.should == "last name 2"
80
80
  end
81
81
 
82
+ it "should not alter the params passed in" do
83
+ passed_params = { addresses: [{ fname: "first name 1", lname: "last name 1"}, { fname: "first name 2", lname: "last name 2"}]}
84
+ @person = Person.new(passed_params)
85
+ @person.addresses.length.should == 2
86
+ @person.addresses.first.class.should == Address
87
+ @person.addresses.first.fname.should == "first name 1"
88
+ passed_params.should == { addresses: [{ fname: "first name 1", lname: "last name 1"}, { fname: "first name 2", lname: "last name 2"}]}
89
+ end
90
+
82
91
  it "should create each class via factory_method if one is specified" do
83
92
  @person = Person.new({ phones: [{ number: '423-5841'}, {number: '383-9139'}]})
84
93
  @person.phones.length.should == 2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plain_old_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-02-13 00:00:00.000000000 Z
13
+ date: 2013-03-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &70107737128780 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,15 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70107737128780
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: activemodel
28
- requirement: &70107737128360 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ! '>='
@@ -33,10 +38,15 @@ dependencies:
33
38
  version: '0'
34
39
  type: :runtime
35
40
  prerelease: false
36
- version_requirements: *70107737128360
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: rake
39
- requirement: &70107737127940 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ! '>='
@@ -44,10 +54,15 @@ dependencies:
44
54
  version: '0'
45
55
  type: :development
46
56
  prerelease: false
47
- version_requirements: *70107737127940
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: rspec
50
- requirement: &70107737127440 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ! '>='
@@ -55,10 +70,15 @@ dependencies:
55
70
  version: '0'
56
71
  type: :development
57
72
  prerelease: false
58
- version_requirements: *70107737127440
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
59
79
  - !ruby/object:Gem::Dependency
60
80
  name: rspec-core
61
- requirement: &70107737126940 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
62
82
  none: false
63
83
  requirements:
64
84
  - - ! '>='
@@ -66,7 +86,12 @@ dependencies:
66
86
  version: '0'
67
87
  type: :development
68
88
  prerelease: false
69
- version_requirements: *70107737126940
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
70
95
  description: ! "This gem is created to cater the projects which do not require a backend/database,\n
71
96
  \ but still need some of the niceties offered by the ActiveRecord"
72
97
  email:
@@ -103,15 +128,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
128
  - - ! '>='
104
129
  - !ruby/object:Gem::Version
105
130
  version: '0'
131
+ segments:
132
+ - 0
133
+ hash: -3603961560709073915
106
134
  required_rubygems_version: !ruby/object:Gem::Requirement
107
135
  none: false
108
136
  requirements:
109
137
  - - ! '>='
110
138
  - !ruby/object:Gem::Version
111
139
  version: '0'
140
+ segments:
141
+ - 0
142
+ hash: -3603961560709073915
112
143
  requirements: []
113
144
  rubyforge_project:
114
- rubygems_version: 1.8.17
145
+ rubygems_version: 1.8.24
115
146
  signing_key:
116
147
  specification_version: 3
117
148
  summary: This gem is created to cater the projects which do not require a backend/database,