embedded_model 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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