minimapper 0.6.1 → 0.6.2
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 +10 -0
- data/lib/minimapper/entity/attributes.rb +10 -9
- data/lib/minimapper/version.rb +1 -1
- data/unit/entity/convert_spec.rb +4 -0
- data/unit/entity_spec.rb +12 -0
- metadata +10 -4
data/README.md
CHANGED
|
@@ -265,6 +265,16 @@ class User
|
|
|
265
265
|
end
|
|
266
266
|
```
|
|
267
267
|
|
|
268
|
+
### Protected attributes
|
|
269
|
+
|
|
270
|
+
We recommend using [strong_parameters](https://github.com/rails/strong_parameters) for attribute security, without including `ActiveModel::ForbiddenAttributesProtection`.
|
|
271
|
+
|
|
272
|
+
Use of `attr_accessible` or `attr_protected` may obstruct the mapper.
|
|
273
|
+
|
|
274
|
+
If you use Minimapper as intended, you only assign attributes on the entity. Once they're on the entity, the mapper will assume they're permitted to be persisted; and once they're in the record, the mapper will assume they are permitted for populating an entity.
|
|
275
|
+
|
|
276
|
+
(FIXME?: There's a ongoing discussion about whether Minimapper should actively bypass attribute protection, or encourage you not to use it, or what.)
|
|
277
|
+
|
|
268
278
|
### Associations
|
|
269
279
|
|
|
270
280
|
There is no core support for associations, but we're implementing them in [minimapper-extras](https://github.com/barsoom/minimapper-extras) as we need them.
|
|
@@ -8,14 +8,15 @@ module Minimapper
|
|
|
8
8
|
|
|
9
9
|
# By adding instance methods via an included module,
|
|
10
10
|
# they become overridable with "super".
|
|
11
|
-
|
|
11
|
+
unless @minimapper_instance_method_container
|
|
12
|
+
@minimapper_instance_method_container = Module.new
|
|
13
|
+
include @minimapper_instance_method_container
|
|
14
|
+
end
|
|
12
15
|
|
|
13
16
|
columns.each do |column|
|
|
14
|
-
define_reader(column
|
|
15
|
-
define_writer(column
|
|
17
|
+
define_reader(column)
|
|
18
|
+
define_writer(column)
|
|
16
19
|
end
|
|
17
|
-
|
|
18
|
-
include instance_method_container
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def attribute(*opts)
|
|
@@ -34,16 +35,16 @@ module Minimapper
|
|
|
34
35
|
@entity_columns |= list.map { |data| Column.new(data) }
|
|
35
36
|
end
|
|
36
37
|
|
|
37
|
-
def define_reader(column
|
|
38
|
-
|
|
38
|
+
def define_reader(column)
|
|
39
|
+
@minimapper_instance_method_container.module_eval do
|
|
39
40
|
define_method(column.name) do
|
|
40
41
|
attributes[column.name]
|
|
41
42
|
end
|
|
42
43
|
end
|
|
43
44
|
end
|
|
44
45
|
|
|
45
|
-
def define_writer(column
|
|
46
|
-
|
|
46
|
+
def define_writer(column)
|
|
47
|
+
@minimapper_instance_method_container.module_eval do
|
|
47
48
|
define_method("#{column.name}=") do |value|
|
|
48
49
|
attributes[column.name] = Convert.new(value).to(column.type)
|
|
49
50
|
end
|
data/lib/minimapper/version.rb
CHANGED
data/unit/entity/convert_spec.rb
CHANGED
data/unit/entity_spec.rb
CHANGED
|
@@ -9,6 +9,10 @@ class TestUser
|
|
|
9
9
|
attributes :name
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
class TestAgedUser < TestUser
|
|
13
|
+
attributes :age
|
|
14
|
+
end
|
|
15
|
+
|
|
12
16
|
class TestProject
|
|
13
17
|
include Minimapper::Entity
|
|
14
18
|
attributes :title
|
|
@@ -87,6 +91,14 @@ describe Minimapper::Entity do
|
|
|
87
91
|
entity.attributes[:id].should == 15
|
|
88
92
|
end
|
|
89
93
|
|
|
94
|
+
it "inherits attributes" do
|
|
95
|
+
user = TestAgedUser.new
|
|
96
|
+
user.name = "Name"
|
|
97
|
+
user.age = 123
|
|
98
|
+
user.name.should == "Name"
|
|
99
|
+
user.age.should == 123
|
|
100
|
+
end
|
|
101
|
+
|
|
90
102
|
it "is possible to override attribute readers with inheritance" do
|
|
91
103
|
user = OverridingTestUser.new
|
|
92
104
|
user.name = "pelle"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: minimapper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.2
|
|
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: 2013-05-
|
|
12
|
+
date: 2013-05-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rake
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70133111671800 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,7 +21,7 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70133111671800
|
|
25
25
|
description: A minimalistic way of separating your models from ORMs like ActiveRecord.
|
|
26
26
|
email:
|
|
27
27
|
- joakim.kolsjo@gmail.com
|
|
@@ -75,12 +75,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
75
75
|
- - ! '>='
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
77
|
version: '0'
|
|
78
|
+
segments:
|
|
79
|
+
- 0
|
|
80
|
+
hash: -2264146464665909809
|
|
78
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
82
|
none: false
|
|
80
83
|
requirements:
|
|
81
84
|
- - ! '>='
|
|
82
85
|
- !ruby/object:Gem::Version
|
|
83
86
|
version: '0'
|
|
87
|
+
segments:
|
|
88
|
+
- 0
|
|
89
|
+
hash: -2264146464665909809
|
|
84
90
|
requirements: []
|
|
85
91
|
rubyforge_project:
|
|
86
92
|
rubygems_version: 1.8.5
|