embedded_model 0.1.2 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +7 -2
- data/embedded_model.gemspec +1 -1
- data/lib/embedded_model/embedder.rb +8 -1
- data/lib/embedded_model/type.rb +7 -15
- data/lib/embedded_model/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28d126fa8bb8769bfe363bfca015e254962d1268
|
4
|
+
data.tar.gz: 191eb772fd2bf3ce4999939a9c50f411b9c69ee6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 850d537ceca626d68f5282eb7b4ab4dea785ffb2d7c8469b9ee3f773eebc51b2860c05c1f0996cf63c2b299d84e8a7b77f85fc351a1b392509cb163fc16f6f4b
|
7
|
+
data.tar.gz: ec09a60aef56b9d0ed9248aa86dc683d431810eabdea01b1e80b8c108f3c0fd65999db4d54656318fa01d1bd8aeca98ca0b7e80b93034cd71ef7bfbaf1d38a37
|
data/README.md
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
A simple extension for ActiveRecord allowing to embed plain-models and store them as JSON. It's well-suited in case the use of full-featured models with underlying tables is redundant.
|
4
4
|
|
5
|
-
Works with ActiveRecord ~> 4.2. Support of the 5th version has not been implemented yet.
|
6
|
-
|
7
5
|
## Installation
|
8
6
|
|
9
7
|
Add this line to your application's Gemfile:
|
@@ -20,6 +18,13 @@ Or install it yourself as:
|
|
20
18
|
|
21
19
|
$ gem install embedded_model
|
22
20
|
|
21
|
+
|
22
|
+
Current version of the gem works with ActiveRecord 5.0.0.rc1 only, but previous one fits well for 4.2.
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
gem 'embedded_model', '~> 0.1.0'
|
26
|
+
```
|
27
|
+
|
23
28
|
## Usage
|
24
29
|
|
25
30
|
### Embeddable models
|
data/embedded_model.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
|
19
|
-
spec.add_dependency 'activerecord', '
|
19
|
+
spec.add_dependency 'activerecord', '5.0.0.rc1'
|
20
20
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
22
22
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
@@ -29,7 +29,14 @@ module EmbeddedModel
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def object_builder
|
32
|
-
->(
|
32
|
+
->(object_or_attributes) do
|
33
|
+
if object_or_attributes.is_a?(model)
|
34
|
+
object_or_attributes
|
35
|
+
else
|
36
|
+
attributes = object_or_attributes.try(:to_hash)
|
37
|
+
model.new(attributes) if attributes
|
38
|
+
end
|
39
|
+
end
|
33
40
|
end
|
34
41
|
|
35
42
|
def collection_builder
|
data/lib/embedded_model/type.rb
CHANGED
@@ -1,27 +1,19 @@
|
|
1
|
-
require 'active_record/connection_adapters/postgresql/oid/json'
|
2
|
-
|
3
1
|
module EmbeddedModel
|
4
|
-
class Type <
|
2
|
+
class Type < ActiveRecord::Type::Internal::AbstractJson
|
5
3
|
def initialize(&builder)
|
6
4
|
@builder = builder
|
7
5
|
end
|
8
6
|
|
9
|
-
def
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
def type_cast_from_user(value)
|
14
|
-
type_cast(value)
|
7
|
+
def cast(attrs)
|
8
|
+
@builder.call(attrs)
|
15
9
|
end
|
16
10
|
|
17
|
-
def
|
18
|
-
super(
|
11
|
+
def serialize(obj)
|
12
|
+
super(obj.as_json)
|
19
13
|
end
|
20
14
|
|
21
|
-
|
22
|
-
|
23
|
-
def cast_value(value)
|
24
|
-
@builder.call(value)
|
15
|
+
def deserialize(json)
|
16
|
+
cast(super)
|
25
17
|
end
|
26
18
|
end
|
27
19
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embedded_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikolai Vasilenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.0.0.rc1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 5.0.0.rc1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|