caprese 0.3.1 → 0.3.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.
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