caprese 0.3.1 → 0.3.2

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: dd2115a6fe41d29441c8e8efcf2dfa28372822e9
4
- data.tar.gz: 03b0dcf4d7bcc71131002edd2249191e13b69023
3
+ metadata.gz: 4b725af58154343e22b1461038d79f44aed23dae
4
+ data.tar.gz: 8b6529bd2b85c220c639a054e2238318a7fabcd6
5
5
  SHA512:
6
- metadata.gz: 29680318f5f3aab40b535ade40c4f037351c78607251619f5644d66cf9cd42331bd31b2f3268e9eea3b5a20743bb987baeae8170a271dadf6425f35a6f8466b4
7
- data.tar.gz: c3e97ebcfbc324959307d519330afd413717d89da94145ec4872d937b41de6cac3062b0ccda2a4bede684842e5ce690e592dc3bbee9ced930cfa8ecf50eb6595
6
+ metadata.gz: 06f96af5359480e0f38f28117752c29d953708b05d9e2e5f5a3578237ed8efabf1967cff668041fc66404dc4a6f71559b08f770bbeda0a4339ba9041f6dad0b4
7
+ data.tar.gz: 392cccbd86e3fec174d5e7f86b545a1d17732c3b8ef6dc1d080221fe17fee04112fa771e3c36ca2ac63243ad5ec46dbb3c33a97b51a4745018fb14106a11139c
data/CHANGELOG.md CHANGED
@@ -10,3 +10,7 @@
10
10
  ## 0.3.1
11
11
 
12
12
  * Remove strict dependencies
13
+
14
+ ## 0.3.2
15
+
16
+ * Allow scoping of `has_many` relationships in serializers, i.e. when the relationship is included in another primary document
@@ -29,6 +29,10 @@ module Caprese
29
29
  # serializer
30
30
  def has_many(name, options = {}, &block)
31
31
  super name, options, &build_association_block(name)
32
+
33
+ define_method name do
34
+ self.relationship_scope(name, object.send(name))
35
+ end
32
36
  end
33
37
 
34
38
  # @see has_many
@@ -0,0 +1,28 @@
1
+ require 'active_support/concern'
2
+
3
+ module Caprese
4
+ class Serializer < ActiveModel::Serializer
5
+ module Relationships
6
+ extend ActiveSupport::Concern
7
+
8
+ # Applies further scopes to a collection association when rendered as part of included document
9
+ # @note Can be overridden to customize scoping at a per-relationship level
10
+ #
11
+ # @example
12
+ # def relationship_scope(name, scope)
13
+ # case name
14
+ # when :transactions
15
+ # scope.by_merchant(...)
16
+ # when :orders
17
+ # scope.by_user(...)
18
+ # end
19
+ # end
20
+ #
21
+ # @param [String] name the name of the association
22
+ # @param [Relation] scope the scope corresponding to a collection association
23
+ def relationship_scope(name, scope)
24
+ scope
25
+ end
26
+ end
27
+ end
28
+ end
@@ -2,6 +2,7 @@ require 'active_model_serializers'
2
2
  require 'caprese/concerns/versioning'
3
3
  require 'caprese/serializer/concerns/links'
4
4
  require 'caprese/serializer/concerns/lookup'
5
+ require 'caprese/serializer/concerns/relationships'
5
6
 
6
7
  module Caprese
7
8
  class Serializer < ActiveModel::Serializer
@@ -9,6 +10,7 @@ module Caprese
9
10
  include Versioning
10
11
  include Links
11
12
  include Lookup
13
+ include Relationships
12
14
 
13
15
  def json_key
14
16
  unversion(self.class.name).gsub('Serializer', '').underscore
@@ -1,3 +1,3 @@
1
1
  module Caprese
2
- VERSION = '0.3.1'
2
+ VERSION = '0.3.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caprese
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Landgrebe
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-02-02 00:00:00.000000000 Z
13
+ date: 2017-02-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: active_model_serializers
@@ -240,6 +240,7 @@ files:
240
240
  - lib/caprese/serializer.rb
241
241
  - lib/caprese/serializer/concerns/links.rb
242
242
  - lib/caprese/serializer/concerns/lookup.rb
243
+ - lib/caprese/serializer/concerns/relationships.rb
243
244
  - lib/caprese/serializer/error_serializer.rb
244
245
  - lib/caprese/version.rb
245
246
  homepage: https://github.com/nicklandgrebe/caprese