clean_model 0.0.2 → 0.0.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.
- data/README.md +13 -0
- data/lib/clean_model/attribute.rb +5 -1
- data/lib/clean_model/base.rb +1 -0
- data/lib/clean_model/version.rb +1 -1
- data/spec/base_model_spec.rb +14 -2
- data/spec/support/models/base_models.rb +1 -0
- metadata +12 -12
data/README.md
CHANGED
@@ -40,6 +40,19 @@ Or install it yourself as:
|
|
40
40
|
|
41
41
|
person.attributes -> {first_name: 'Jorge', last_name: 'Doe'}
|
42
42
|
|
43
|
+
### Defaults
|
44
|
+
|
45
|
+
class Person
|
46
|
+
include CleanModel::Base
|
47
|
+
|
48
|
+
attribute :first_name, default: 'John'
|
49
|
+
attribute :last_name
|
50
|
+
end
|
51
|
+
|
52
|
+
person = Person.new
|
53
|
+
person.first_name -> 'John'
|
54
|
+
person.last_name -> nil
|
55
|
+
|
43
56
|
### Active Model validations
|
44
57
|
|
45
58
|
class Person
|
@@ -18,7 +18,7 @@ module CleanModel
|
|
18
18
|
obj = klass.new
|
19
19
|
obj.assign_attributes value
|
20
20
|
obj
|
21
|
-
elsif value.is_a?(Array) && collection_class.
|
21
|
+
elsif value.is_a?(Array) && collection_class.instance_methods.include?(:assign_attributes)
|
22
22
|
value.map do |v|
|
23
23
|
if v.is_a? collection_class
|
24
24
|
v
|
@@ -33,6 +33,10 @@ module CleanModel
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
def assign_default(model)
|
37
|
+
model.send("#{@name}=", @options[:default]) if @options[:default] && model.respond_to?("#{@name}=")
|
38
|
+
end
|
39
|
+
|
36
40
|
private
|
37
41
|
|
38
42
|
def klass
|
data/lib/clean_model/base.rb
CHANGED
data/lib/clean_model/version.rb
CHANGED
data/spec/base_model_spec.rb
CHANGED
@@ -43,10 +43,11 @@ describe CleanModel::Base do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'Get attributes hash' do
|
46
|
-
person = Person.new first_name: 'John', last_name: 'Doe'
|
47
|
-
person.attributes.keys.should eq [:first_name, :last_name]
|
46
|
+
person = Person.new first_name: 'John', last_name: 'Doe', nationality: :usa
|
47
|
+
person.attributes.keys.should eq [:first_name, :last_name, :nationality]
|
48
48
|
person.attributes[:first_name].should eq 'John'
|
49
49
|
person.attributes[:last_name].should eq 'Doe'
|
50
|
+
person.attributes[:nationality].should eq :usa
|
50
51
|
end
|
51
52
|
|
52
53
|
end
|
@@ -73,6 +74,17 @@ describe CleanModel::Base do
|
|
73
74
|
|
74
75
|
end
|
75
76
|
|
77
|
+
context 'Default values' do
|
78
|
+
|
79
|
+
it 'Verify default value' do
|
80
|
+
person = Person.new
|
81
|
+
person.first_name.should be_nil
|
82
|
+
person.last_name.should be_nil
|
83
|
+
person.nationality.should eq :argentina
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
76
88
|
context 'Attribute type conversions' do
|
77
89
|
|
78
90
|
it 'Transform to model when assign a hash' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clean_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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: 2012-09-
|
12
|
+
date: 2012-09-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &26200020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *26200020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activemodel
|
27
|
-
requirement: &
|
27
|
+
requirement: &26162892 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.0.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *26162892
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: web_client
|
38
|
-
requirement: &
|
38
|
+
requirement: &26145552 !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: *
|
46
|
+
version_requirements: *26145552
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &26039160 !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: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *26039160
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: webmock
|
60
|
-
requirement: &
|
60
|
+
requirement: &25913220 !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: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *25913220
|
69
69
|
description: Extensions for ActiveModel to implement multiple types of models
|
70
70
|
email:
|
71
71
|
- gabynaiman@gmail.com
|