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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e78534a14ac279770ebed2d92db40cf8a3fa1595
4
- data.tar.gz: 8c4a86a6594ef13a49ac0323ec3f838a6980e37f
3
+ metadata.gz: 28d126fa8bb8769bfe363bfca015e254962d1268
4
+ data.tar.gz: 191eb772fd2bf3ce4999939a9c50f411b9c69ee6
5
5
  SHA512:
6
- metadata.gz: b14e521b92ca30246b228d8121f33273a44f6ac45fc219ad3b7c8abda994699cba47836e85dfa1211303a46103b6429e012724973588c3785bdad373563a3796
7
- data.tar.gz: 84050aecada229e6b42fe8795d82a8d8811b9cb6efbc6dae96ec7a01ea29fc4f7ad5a5b1114e57296c0ed66870cf8018180983edba7b7383b98b8b74da224e53
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
@@ -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', '~> 4.2'
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
- ->(attrs) { attrs.is_a?(model) ? attrs : model.new(attrs.try(:to_hash)) }
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
@@ -1,27 +1,19 @@
1
- require 'active_record/connection_adapters/postgresql/oid/json'
2
-
3
1
  module EmbeddedModel
4
- class Type < ::ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Json
2
+ class Type < ActiveRecord::Type::Internal::AbstractJson
5
3
  def initialize(&builder)
6
4
  @builder = builder
7
5
  end
8
6
 
9
- def type_cast_from_database(value)
10
- type_cast(super)
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 type_cast_for_database(value)
18
- super(value.as_json)
11
+ def serialize(obj)
12
+ super(obj.as_json)
19
13
  end
20
14
 
21
- private
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
@@ -1,3 +1,3 @@
1
1
  module EmbeddedModel
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  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.1.2
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-04-10 00:00:00.000000000 Z
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: '4.2'
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: '4.2'
26
+ version: 5.0.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement